7

mongodbプロジェクションのプロパティの値のみを返す方法はありますか?たとえば、値が配列であるプロパティを持つドキュメントがあります。クエリからの戻りオブジェクトを、ではなく配列のみにしたいproperty: [ .. ]。例:

書類:

db.test.insert({ name: "Andrew",
   attributes: [ { title: "Happy"},
                 { title: "Sad" }
               ]
});

クエリ:

db.test.find({name: "Andrew"},{attributes:1, "_id":0});

それは戻ります:

{ "attributes" : [ { "title" : "Happy" }, { "title" : "Sad" } ] }

私はそれを配列に戻したい:

[ { title: "Happy"},
  { title: "Sad" }
]

それを行う方法はありますか?ありがとう

4

1 に答える 1

6

JSONはトップレベルを配列にすることを許可しないため、通常のクエリではこれを許可しません。ただし、これは集約フレームワークを使用して行うことができます。

> db.test.remove();
> db.test.insert({ name: "Andrew", attributes: [ { title: "Happy"}, { title: "Sad" } ] });
> foo = db.test.aggregate( { $match: { name: "Andrew" } }, { $unwind: "$attributes" }, { $project: { _id: 0, title: "$attributes.title" } } );
{
    "result" : [
        {
            "title" : "Happy"
        },
        {
            "title" : "Sad"
        }
    ],
    "ok" : 1
}
> foo.result
[ { "title" : "Happy" }, { "title" : "Sad" } ]

ただし、これは、findが作成するカーソルオブジェクトを作成しません。

于 2013-02-05T20:22:40.383 に答える