0

大家好,我的文档结构如下:

{
    name : abc
    message:
    [{
         id: 4,
         status : 0,
         content : "abc"
     },
     {
         id: 2,
         status : 1,
         content : "abc"
     },
     {
         id: 1,
         status : 1,
         content : "abc"
     }
    ]
}

如何通过 id 键和状态 = 1 获取排序的消息数组

{
     id: 1,
     status : 1,
     content : "abc"
 },
 {
     id: 2,
     status : 1,
     content : "abc"
 },

非常感谢!

4

1 回答 1

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,在匹配相关的之后,您可以使用 $project 运算符

如果您不希望显示名称键,只需不要在查询的项目部分中指定名称键。默认情况下,mongo 只会显示值为 1 的键。如果没有提到该键,则不会显示它。

然后使用 $sort 运算符,1 表示升序,-1 表示降序。

于 2013-03-11T07:14:40.450 回答