sql >> データベース >  >> NoSQL >> MongoDB

mongoプロジェクションで配列値のみを返します

    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が作成するカーソルオブジェクトは作成されません。




    1. このdb.eval->array.pushが特定のレコードに対して2回実行されるのはなぜですか?

    2. MongoDBの集計カウントが遅すぎる

    3. 深くネストされた配列mongodbを更新します

    4. 最適化-MongooseMongoDBスキーマのすべてのフィールドで検索