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

$project в $lookup агрегиране

Основното предизвикателство е, че искате всички полета от основния документ (тъй като не ги познавате всички) плюс само 2 от списъка.

Това трябва да го направи:

{
  $project: {
    "_id": 0,
    "document": "$$CURRENT",
    "list._id": "$$CURRENT.list._id",
    "list.name": "$$CURRENT.list.name"
  }
}, {
  $project: {
    "document.list": 0
  }
}, {
  $addFields: {
    "document.list._id": "$$CURRENT.list._id",
    "document.list.name": "$$CURRENT.list.name"
  }
}, {
  $replaceRoot: {
    newRoot: "$document"
  }
}

Минава през няколко етапа, но върши работата :). Ще вземе текущия документ и само полетата от списъка, които искате. След това ще премахне списъка си от текущия документ. След това ще добави към същия този документ списъка (тъй като този е с конкретните полета, които искаме). След това ще добави тези полета към документа и накрая ще замени корена с този документ.

Вижте как работи тук .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. PyMongo и метод toArray().

  2. MongooseJS - Как да запазите документ и препратен документ

  3. Необходим съвет:Как правилно да свържете React към MongoDB

  4. Как се сравняват данните на Morphia, Mongo4j и Spring за MongoDB?

  5. Сравнение на агрегиране на MongoDB:group(), $group и MapReduce