MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Извличане на данни от 2 колекции в mongodb в една заявка

Можете да опитате по-долу агрегиране с mongodb 3.6 и по-горе, но мисля, че трябва да използвате две заявки, защото за големия набор от данни $lookup тръбопроводът ще наруши BSON лимит от 16mb . Но също така зависи от вашето $match условие или $limit . Ако се прилагат към $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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Защо MongoDB не се актуализира, освен ако не извикам .then res.json(...) след findOneAndUpdate?

  2. Съхранение и извличане на JavaScript обекти в/от MongoDB

  3. изключване на полета в $lookup агрегиране

  4. Pymongo получава вмъкнати идентификационни номера дори при грешка с дублиран ключ

  5. как да получите комбинации от елементи в поле за масив в MongoDB?