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

埋め込まれたドキュメントのみを返すMongoDBクエリ

    あなたが望んでいたのはこれだと思います:

    print db.dvds.aggregate([
      {"$unwind": "$episodes"}, # One document per episode
      {"$match": {"episodes.title": "Episode 1"} }, # Selects (filters)
      {"$group": {"_id": "$_id", # Put documents together again
                  "episodes": {"$push": "$episodes"},
                  "title": {"$first": "$title"} # Just take any title
                 }
      },
    ])["result"]
    

    出力(空白以外)は次のとおりです:

    [ { u'episodes': [ { u'title': u'Episode 1',
                         u'desc': u'...'
                       }
                     ],
        u'_id': ObjectId('51542645a0c6dc4da77a65b6'),
        u'title': u'The Hitchhikers Guide to the Galaxy'
      }
    ]
    

    u"_id"から削除したい場合 、パイプラインを次のように追加します:

      {"$project": {"_id": 0,
                    "episodes": "$episodes",
                    "title": "$title"}
                   }
    


    1. Mongoを使用して、配列内のオブジェクトのフィールドをクエリしますか?

    2. mongoDB:配列フィールドに追加された新しい子ごとにObjectIdを作成する

    3. MongoDBコンソールで_idで削除

    4. evalなしでredisからオブジェクトを取得しますか?