我有一些像这样的地方:
{
"_id" : ObjectId("575014da6b028f07bef51d10"),
"name" : "MooD",
.
.
.
"categories" : [
{
"categoryList" : [Nightlife, Bar],
"weight" : 8
},
{
"categoryList" : [Restaurant, Italian Restaurant],
"weight" : 4
}
]
}
我想按类别搜索地点,例如" Bar"。 所以,我研究了类别' categoryList如果有" Bar"。 在那之后,我想根据匹配类别的重量进行排序, 这样,上面的地方(酒吧重量为8)出现在另一个酒吧重量为5的地方之前。
答案 0 :(得分:2)
您必须使用聚合框架。 检查一下:
db.mongo.aggregate(
{ $unwind: '$scores' },
{ $match: {
'scores.categoryList': 'Bar'
}},
{ $sort: {
'scores.weight': -1
}}
)