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

MongoDBアグリゲートを使用して、nullを含む各グループの最初のグループを取得するにはどうすればよいですか?

    $ firstを使用できます _idを返す $group ステージ。

    db.people.aggregate([ 
        { '$match': { 'flag': true } }, 
        { '$project': {
            'name': 1,          
            'alias': { 
                '$cond': [
                    { '$eq': [ '$alias', null ] }, 
                    '$_id', 
                    '$alias' 
                ]
            }
        }},
        { '$group': {
            '_id': '$alias',         
            'name':  { '$first': '$name' },          
            'id': { '$first': '$_id' }       
        }}, 
        { '$project': {
            'alias': {
                '$cond': [ 
                    { '$eq': [ '$id', '$_id' ] }, 
                    null, 
                   '$_id' 
                ]
            }, 
            'name': 1,
            '_id': '$id'
        }}
    ])
    

    どちらが返されますか:

    { "_id" : "6", "name" : "Zoe", "alias" : "2211293acc82329a" }
    { "_id" : "4", "name" : "Cristina", "alias" : null }
    { "_id" : "2", "name" : "Bob", "alias" : "afa776bea788cf4c" }
    { "_id" : "1", "name" : "Alice", "alias" : null }
    


    1. コマンドラインからMongoDBデータベースを削除するにはどうすればよいですか?

    2. MongoDBドキュメントからフィールドを削除する方法($ unset)

    3. 流星生産サーバーからローカルまでのMongorestore

    4. SailsJSとMongoDBAggregationフレームワークのカスタムクエリに関する問題