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

Как мога да извикам свойствата, които са в друга колекция в подмасив?

Може да има много начини, един от начините е използването на $lookup както вече опитахте

db.place.aggregate([
  { "$match": { "place": "Room 5" } },
  { $unwind: "$type_place_objects"  },
  {
    "$lookup": {
      "from": "type_place",
      "let": { tpo: "$type_place_objects._id" },
      "pipeline": [
        { $unwind: "$objects" },
        {
          $match: {
            $expr: {
              $eq: [ "$objects._id", "$$tpo" ]
            }
          }
        }
      ],
      "as": "join"
    }
  },
  {
    $addFields: {
      "join": { "$arrayElemAt": [ "$join", 0]
      }
    }
  },
  {
    $addFields: { "type_place_objects.name": "$join.objects.name" }
  },
  {
    $group: {
      _id: "$_id",
      place: { $first: "$place" },
      type_place_objects: { "$addToSet": "$type_place_objects" }
    }
  }
])

Работеща Mongo playground




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как настройвате набор от реплики на Mongo на Kubernetes?

  2. Как да създам MongoDB дъмп на моята база данни?

  3. MongoError:не може да промени _id на документ

  4. Основни заявки между дати $gte, $lte и т.н

  5. най-добра практика за синхронизиране на данни в nodejs