Computer >> Máy Tính >  >> Lập trình >> MongoDB

Làm cách nào để nhận được kết quả "-Infinity" cho $ avg trong một truy vấn tổng hợp?

Đối với điều này, bạn có thể sử dụng tổng hợp (). Trước tiên, chúng ta hãy tạo một bộ sưu tập với các tài liệu có vlaue là -infinity -

> db.demo5.insertOne({ "_id" : 100, "seq" : 10, "Value" : -Infinity });
{ "acknowledged" : true, "insertedId" : 100 }
> db.demo5.insertOne({ "_id" : 101, "seq" : 10, "Value" : 50 });
{ "acknowledged" : true, "insertedId" : 101 }
> db.demo5.insertOne({ "_id" : 102, "seq" : 20, "Value" : 60 });
{ "acknowledged" : true, "insertedId" : 102 }
> db.demo5.insertOne({ "_id" : 103, "seq" : 20, "Value" : 50 });
{ "acknowledged" : true, "insertedId" : 103 }

Sau đây là truy vấn để hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find () -

> db.demo5.find();

Điều này sẽ tạo ra kết quả sau &miuns;

{ "_id" : 100, "seq" : 10, "Value" : -Infinity }
{ "_id" : 101, "seq" : 10, "Value" : 50 }
{ "_id" : 102, "seq" : 20, "Value" : 60 }
{ "_id" : 103, "seq" : 20, "Value" : 50 }

Đây là truy vấn để nhận kết quả "-Infinity" cho $ avg trong một truy vấn tổng hợp. Trên cơ sở seq, chúng tôi đã tìm thấy giá trị trung bình. Điều này dẫn đến -Infinity -

> db.demo5.aggregate([{$group:{"_id":"$seq", "average" : {$avg : "$Value"}}}]);

Điều này sẽ tạo ra kết quả sau -

{ "_id" : 20, "average" : 55 }
{ "_id" : 10, "average" : -Infinity }