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

単一のクエリでmongodbの2つのコレクションからデータを取得します

    以下の集計をmongodb3.6で試すことができます 以上ですが、大規模なデータセットの場合は $ lookup パイプラインはBSON制限に違反します 16mb 。ただし、 $ matchによっても異なります。 条件または$limit <に適用される場合code> $ lookup パイプラインを作成すると、集計は完全に機能します。

    db.OrderType1.aggregate([
      { "$limit": 1 },
      { "$facet": {
        "collection1": [
          { "$limit": 1 },
          { "$lookup": {
            "from": "OrderType1",
            "pipeline": [{ "$match": { } }],
            "as": "collection1"
          }}
        ],
        "collection2": [
          { "$limit": 1 },
          { "$lookup": {
            "from": "OrderType2",
            "pipeline": [{ "$match": { } }],
            "as": "collection2"
          }}
        ]
      }},
      { "$project": {
        "data": {
          "$concatArrays": [
            { "$arrayElemAt": ["$collection1.collection1", 0] },
            { "$arrayElemAt": ["$collection2.collection2", 0] },
          ]
        }
      }},
      { "$unwind": "$data" },
      { "$replaceRoot": { "newRoot": "$data" } }
    ])
    



    1. マングース、mongoDBの状態に基づいて入力します

    2. MongoDb Aggregation:array-1とarray-2が指定されている場合、別のarray-2に基づいてarray-1をグループ化するにはどうすればよいですか?

    3. Luaスクリプトとredis-None値をテストする方法

    4. Javaを介してMongoDBに一度に複数のドキュメントを挿入する方法