您可以为此使用聚合框架。在这里,我们将得到总和,然后将其匹配以搜索少于特定编号的文档。首先让我们创建一个包含文档的集合-
> 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") }
以下是在find()
方法的帮助下显示集合中所有文档的查询-
> db.searchDocumentsDemo.find().pretty();
这将产生以下输出-
{ "_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 }
以下是基于在文档上添加两个属性的值来搜索文档的查询-
> db.searchDocumentsDemo.aggregate([ ... { $project: {totalValue: { $add: [ "$Value1", "$Value2" ] } } }, ... { $match: {totalValue: {$lt: 500 }} } ... ]);
这将产生以下输出-
{ "_id" : ObjectId("5cd3fe29edc6604c74817cea"), "totalValue" : 450 } { "_id" : ObjectId("5cd3fe45edc6604c74817cec"), "totalValue" : 400 }