数据库样本......
{ "code" : "2156",
"trades" : [
{
"close" : 78000,
"date" : "2017.11.08"
},
{
"close" : 25300,
"date" : "2017.08.07"
},
{
"close" : 74900,
"date" : "2017.11.07"
}
]
},
{ "code" : "2158",
"trades" : [
{
"close" : 79000,
"date" : "2017.11.08"
},
{
"close" : 24300,
"date" : "2017.08.07"
},
{
"close" : 71900,
"date" : "2017.11.07"
}
]
}
以上是我存在的mongodb数据样本。我想要做的是通过 date asc 在trades
中排列对象。所以它应该像这样安排
"trades" : [
{
"close" : 24300,
"date" : "2017.08.07"
},
{
"close" : 71900,
"date" : "2017.11.07"
},
{
"close" : 79000,
"date" : "2017.11.08"
}
]
有没有办法做到这一点?我正在使用Node.js和Mongoose。 我已经查看了这篇文章:
how to sort array inside collection record in mongoDB
但它看起来没有订购db本身,它只是查询db到某些条件,对吧?有没有办法订购db本身?
答案 0 :(得分:1)
您可以$sort
修饰符来对数组中的元素进行排序。 multi:true
将更新应用于多个文档。
像
这样的东西db.collection_name.update( { }, { $push: { trades: { $each: [ ], $sort:{date:1}} } }, {multi: true } )
答案 1 :(得分:0)
"订购数据库"真的没必要。如果您在要查询的字段上创建索引,MongoDB将有效地" order"这些适合你。
以下是MongoDB关于创建索引的说明:https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/
因为你用node.js标记了这个,我假设你正在使用mongoose。在这种情况下,您可以将{index:true}添加到架构定义中。
Mongoose关于定义模式索引的说明: http://mongoosejs.com/docs/3.4.x/docs/guide.html#indexes