我没有关于如何创建mongodb查询的扩展知识,但我想问一下如何查询集合得到这样的东西:
{
Total: 1000,
Filtered: 459,
DocumentArray: []
}
当然在一个查询中这样做,所以我不需要做这样的事情:
db.collection.find();
db.collection.find().count();
db.colection.count();
答案 0 :(得分:1)
你可以沿着这些方向做点什么:
考虑这样的文件:
{ "_id" : ObjectId("531251829df82824bdb53578"), "name" : "a", "type" : "b" }
{ "_id" : ObjectId("531251899df82824bdb53579"), "name" : "a", "type" : "c" }
{ "_id" : ObjectId("5312518e9df82824bdb5357a"), "type" : "c", "name" : "b" }
这样的聚合管道:
db.collection.aggregate([
{ "$group": {
"_id": null,
"totalCount": { "$sum": 1 },
"docs": { "$push": {
"name": "$name",
"type": "$type"
}},
}},
{ "$unwind": "$docs" },
{ "$match": { "docs.name": "a" } },
{ "$group": {
"_id": null,
"totalCount": { "$first": "$totalCount" },
"filteredCount": { "$sum": 1 },
"docs": { "$push": "$docs" }
}}
])
但我不会推荐它。由于超过maximum BSON document size,它肯定会在任何“真正的”集合中爆炸。我怀疑它会表现得很好。但即使效用纯粹是学术性的,它就是如何做到的。
如果您需要这些信息,只需做您正在做的事情。 是这样做的“正确方法”。