MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Pobierz dane z 2 kolekcji w mongodb w jednym zapytaniu

Możesz spróbować poniższej agregacji za pomocą mongodb 3,6 i powyżej, ale myślę, że powinieneś użyć dwóch zapytań, ponieważ dla dużego zestawu danych $lookup potok naruszy Limit BSON z 16 MB . Ale również zależy to od twojego $match warunek lub $limit . Jeśli są stosowane do $lookup potok, wtedy Twoja agregacja będzie działać idealnie.

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. Jak przenieść dane z MongoDB do SQL-Server?

  2. pymongo nie może połączyć się z bazą danych na zdalnym serwerze

  3. Zatapianie danych tematycznych od producenta Javy do Mongodb

  4. Migracja z Tokumx 1.5 na serwer Percona dla mongodb 3.11

  5. MongoDB filtruje wiele poddokumentów