大家好,我有一个文档的结构是这样的:
{
name : abc
message:
[{
id: 4,
status : 0,
content : "abc"
},
{
id: 2,
status : 1,
content : "abc"
},
{
id: 1,
status : 1,
content : "abc"
}
]
}
如何通过id键和status = 1获取已排序的消息数组 我的意思是
{
id: 1,
status : 1,
content : "abc"
},
{
id: 2,
status : 1,
content : "abc"
},
非常感谢!
答案 0 :(得分:1)
这个解决方案在mongo shell中,应该适合你。但Mongo 2.1以后支持聚合框架。 http://docs.mongodb.org/manual/applications/aggregation/
db.yourcollection.aggregate([{$unwind:"$message"},{$match:{"message.status":1}},{$project:{_id:0,message:1}},{$sort:{"message.id":1}}])
由于您的消息键是一个数组,您必须首先使用$ unwind运算符,然后使用$ match运算符。
默认情况下,mongo将显示文档的_id。因此,如果您不想显示_id,则在匹配相关的_id之后,您可以使用$ project运算符
如果您不希望显示名称密钥,则只需在查询的项目部分中不指定名称密钥。默认情况下,mongo只显示值为1的键。如果未提及该键,则不会显示该键。
然后你使用$ sort运算符,1代表asecnding,-1代表降序。