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 シェルのこのソリューションは、うまくいくはずです。ただし、集約フレームワークは 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 に答える