如何在mongodb中对对象数组进行排序

时间:2019-01-04 07:42:37

标签: node.js mongodb

我的MongoDB文档结构:

 _id:ObjectId("12345")
    hai:Array
    0:Object
    designation:"software"
    1:Object
    designation:"hardware"
    2:Object
    designation:"Core"

我需要按hai数组对名称进行排序。 我尝试过这样,但是没有用

db.collection.find({_id:ObjectId("12345")}).sort(hai:-1)
db.collection.find({_id:ObjectId("12345")}).sort(hai.designation:-1)

任何人都可以帮忙, 预先感谢

2 个答案:

答案 0 :(得分:0)

您必须先unwind个数组,然后才能对数据进行排序。

参考链接:Sort array

答案 1 :(得分:0)

sort函数需要一个这样的对象(注意括号中的内容):

db.collection.find({_id:ObjectId("12345")}).sort({hai:-1})

db.collection.find({_id:ObjectId("12345")}).sort({"hai.designation":-1})

还请注意,如果您的排序是在嵌套对象上,则需要在密钥周围使用引号。

此外:如果您不使用管道(即复杂的查询),则无需使用展开。