如何按数组中匹配条件的元素对MongoDB结果进行排序?
我收集了一些地方,如下所示:如何按数组中匹配条件的元素对MongoDB结果进行排序?,mongodb,mongodb-query,mongodb-aggregation,Mongodb,Mongodb Query,Mongodb Aggregation,我收集了一些地方,如下所示: { "_id" : ObjectId("575014da6b028f07bef51d10"), "name" : "MooD", . . . "categories" : [ { "categoryList" : [Nightlife, Bar], "weight" : 8 }, { "categoryList" : [Restaurant, Italian Restaurant],
{
"_id" : ObjectId("575014da6b028f07bef51d10"),
"name" : "MooD",
.
.
.
"categories" : [
{
"categoryList" : [Nightlife, Bar],
"weight" : 8
},
{
"categoryList" : [Restaurant, Italian Restaurant],
"weight" : 4
}
]
}
我想按类别搜索位置,例如“酒吧”。
所以,如果有“Bar”,我会查看类别的分类列表。
然后,我想根据匹配类别的权重进行排序,
因此,上述位置(钢筋重量为8)出现在另一个钢筋重量为5的位置之前 您必须使用聚合框架。 选中此项:
db.mongo.aggregate(
{ $unwind: '$scores' },
{ $match: {
'scores.categoryList': 'Bar'
}},
{ $sort: {
'scores.weight': -1
}}
)
您必须使用聚合框架。 选中此项:
db.mongo.aggregate(
{ $unwind: '$scores' },
{ $match: {
'scores.categoryList': 'Bar'
}},
{ $sort: {
'scores.weight': -1
}}
)
在您的情况下,聚合是否有效?在您的情况下,聚合是否有效?这很有效。非常感谢您的回复。在你上面的问题中,我相信分数是用来分类的。现在的问题是,我无法在回复中获得其余类别。在我的问题的例子中,我还想得到那个地方的餐馆类别。你有什么想法吗?先谢谢你。我不确定我是否理解你的意思。。。。尝试以下代码:db.mongo.aggregate({$project:{“scores.categoryList”:1,“scores.weight”:1,“\u id”:0}},{$unwind:'$scores'},{$unwind:'$scores.categoryList'},{$sort:{'scores.weight':-1})我建议您访问MongoDB大学页面()并学习其中一门课程。他们是免费的,而且很有帮助。这很有效。非常感谢您的回复。在你上面的问题中,我相信分数是用来分类的。现在的问题是,我无法在回复中获得其余类别。在我的问题的例子中,我还想得到那个地方的餐馆类别。你有什么想法吗?先谢谢你。我不确定我是否理解你的意思。。。。尝试以下代码:db.mongo.aggregate({$project:{“scores.categoryList”:1,“scores.weight”:1,“\u id”:0}},{$unwind:'$scores'},{$unwind:'$scores.categoryList'},{$sort:{'scores.weight':-1})我建议您访问MongoDB大学页面()并学习其中一门课程。他们是免费的,非常有帮助。