sql >> Databáze >  >> NoSQL >> MongoDB

Získejte data ze 2 kolekcí v mongodb v jediném dotazu

Níže můžete vyzkoušet agregaci s mongodb 3.6 a výše, ale myslím, že byste měli použít dva dotazy, protože pro velký soubor dat $lookup potrubí poruší limit BSON 16 MB . Ale také záleží na vašem $match podmínkou nebo $limit . Pokud jsou použity na $lookup potrubí, pak by vaše agregace fungovala perfektně.

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. Socket.io, Redis Store a IE

  2. seřadit podle délky řetězce v Mongodb/pymongo

  3. Automaticky odstranit odkazující objekty při smazání v MongoDB

  4. Jak vytvořit DB pro kontejner MongoDB při spuštění?