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

MongoDBは、c#のドキュメントから一致するサブドキュメントのみを取得します

    必要な出力は、集約するだけで生成できます:

    db.collection.aggregate([
       {$match : { empId : '999', 'empActivity.Stamp' : { $lte : ISODate("2015-01-09T12:33:39.927Z")} }},
       {$unwind : '$empActivity'},
       {$match : { empId : '999', 'empActivity.Stamp' : { $lte : ISODate("2015-01-09T12:33:39.927Z")} }},
       {$group: { _id: '$empId', empActivity: { $addToSet: '$empActivity' }}}
    ])
    

    C#で:

    var args = new AggregateArgs
    {
        Pipeline = new List<BsonDocument>
        {
            BsonDocument.Parse("{$match : { empId : '999', 'empActivity.Stamp' : { $lte : ISODate('2015-01-09T12:33:39.927Z')} }}"),
            BsonDocument.Parse("{$unwind : '$empActivity'}"),
            BsonDocument.Parse("{$match : { empId : '999', 'empActivity.Stamp' : { $lte : ISODate('2015-01-09T12:33:39.927Z')} }}"),
            BsonDocument.Parse("{$group: { _id: '$empId', empActivity: { $addToSet: '$empActivity' }}}"),
        }
    };
    
    var result = collection.Aggregate(args).ToList();
    



    1. MorphiaMongoDBはnullおよび存在しないフィールドをチェックします

    2. mongodb2dsphereの一意のインデックスでキーエラーが重複しています

    3. MongoDB $ toString

    4. 配列内のオブジェクトのMongoDB集計合計