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

MongoDB:同じコレクションからのすべての結果を結合する方法は?

    $facetを使用できます ここに集約。

    db.test.aggregate([
      { "$facet": {
        "first": [
          { "$match": { "category_id": 1 }},
          { "$sort": { "createAt": -1 }},
          { "$limit": 5 }
        ],
        "second": [
          { "$match": { "category_id": 2 }},
          { "$sort": { "createAt": -1 }},
          { "$limit": 5 }
        ]
      }},
      { "$project": { "data": { "$concatArrays": ["$first", "$second"] }}},
      { "$unwind": "$data" },
      { "$replaceRoot": { "newRoot": "$data" }}
    ])
    

    更新

    単純なJavaScriptを使用する

    const test1 = await db.test.find({ category_id: 1 }).sort({ createAt: -1 }).limit(5)
    
    const test2 = await db.test.find({ category_id: 1 }).sort({ createAt: -1 }).limit(5)
    
    const test = test1.concat(test2)
    
    console.log(test)
    



    1. MongoDB一括挿入は重複を無視します

    2. redisコマンドの非同期実行

    3. MongoDB:自動生成されたObjectIDの代わりに特定のIDを持つドキュメントを挿入します

    4. RedisExpireが機能しない