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

Попълване на конкретни полета в $lookup

Можете да използвате агрегацията по-долу с mongodb 3.6 и по-горе

С по-новия $lookup синтаксис можете да използвате $project йон вътре в $lookup тръбопровод

db.collection.aggregate([
  { "$group": {
    "_id": "$userId",
    "projectId": { "$push": "$projectId" }
  }},
  { "$lookup": {
    "from": "users",
    "let": { "userId": "$_id" },
    "pipeline": [
      { "$match": { "$expr": { "$eq": [ "$_id", "$$userId" ] }}},
      { "$project": { "firstName": 1 }}
    ],
    "as": "user"
  }},
  { "$unwind": "$user" },
  { "$lookup": {
    "from": "projects",
    "let": { "projectId": "$projectId" },
    "pipeline": [
      { "$match": { "$expr": { "$in": [ "$_id", "$$projectId" ] }}},
      { "$project": { "projectName": 1 }}
    ],
    "as": "projects"
  }}
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Вмъкване на масив в обект в MongoDB

  2. MongoDB - $setIsSubset оператор не работи с $match етап

  3. Проследяване на производителността на MongoDB?

  4. Mongoose getter/setter за нормализиране на данни

  5. MongoDB $sortByCount оператор за агрегиране