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

Làm thế nào để tìm kiếm tài liệu dựa trên giá trị của việc thêm hai thuộc tính trong MongoDB?

Bạn có thể sử dụng khung tổng hợp cho việc này. Ở đây, chúng tôi sẽ lấy tổng và sau đó đối sánh nó để tìm kiếm các tài liệu nhỏ hơn một số cụ thể. Trước tiên, hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -

> db.searchDocumentsDemo.insertOne({"Value1":100,"Value2":560});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd3fe1eedc6604c74817ce9")
}
> db.searchDocumentsDemo.insertOne({"Value1":300,"Value2":150});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd3fe29edc6604c74817cea")
}
> db.searchDocumentsDemo.insertOne({"Value1":400,"Value2":200});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd3fe30edc6604c74817ceb")
}
> db.searchDocumentsDemo.insertOne({"Value1":190,"Value2":210});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd3fe45edc6604c74817cec")
}

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.searchDocumentsDemo.find().pretty();

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

{
   "_id" : ObjectId("5cd3fe1eedc6604c74817ce9"),
   "Value1" : 100,
   "Value2" : 560
}
{
   "_id" : ObjectId("5cd3fe29edc6604c74817cea"),
   "Value1" : 300,
   "Value2" : 150
}
{
   "_id" : ObjectId("5cd3fe30edc6604c74817ceb"),
   "Value1" : 400,
   "Value2" : 200
}
{
   "_id" : ObjectId("5cd3fe45edc6604c74817cec"),
   "Value1" : 190,
   "Value2" : 210
}

Sau đây là truy vấn để tìm kiếm tài liệu dựa trên giá trị của việc thêm hai thuộc tính trên tài liệu -

> db.searchDocumentsDemo.aggregate([
...   { $project: {totalValue: { $add: [ "$Value1", "$Value2" ] } } },
...   { $match: {totalValue: {$lt: 500 }} }
... ]);

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

{ "_id" : ObjectId("5cd3fe29edc6604c74817cea"), "totalValue" : 450 }
{ "_id" : ObjectId("5cd3fe45edc6604c74817cec"), "totalValue" : 400 }