1
我是新来蒙戈,我期待实现使用氧化镁司机转到一个面搜索。我需要获得符合我的查询以及方面计数的文档。与小蒙戈搜索结果计数
我目前的执行是执行查询来获取文件,然后用同样的参数,以获得小计数另一个查询,但似乎真的效率低下。是否有一个很好的方法来一步完成此操作?
举例来说,如果我有藏书:
[{
title: "Book One",
author: "Author A",
numPages: 20,
type: "book"
},
{
title: "Book Two",
author: "Author B",
numPages: 40,
type: "book"
},
...
...
...
{
title: "Magazine AA",
author: "Author A",
numPages: 10,
type: "magazine"
}]
首先,我得符合我的查询文件:
err = books.Find(bson.M{"$and": matches}).All(&results)
然后我重复使用聚合管道和$查询方面得到方面计数:
err = Pipe([]bson.M{
{"$match": bson.M{"$and": matches}},
{"$facet": bson.M{
"type": []bson.M{bson.M{"$sortByCount": "$type"}},
"author": []bson.M{bson.M{"$sortByCount": "$author"},
}},
}).All(&facets)
我也看到了美元,这将让我写我的结果到一个临时集合,然后我可以用它来确定方面的数量,但我不知道这是否更有效。
太好了!非常感谢你。 – user3476370