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

Външното поле на $lookup може да бъде полето на вложен документ?

Няма позиционен оператор за $lookup, но можете да използвате персонализиран pipeline в MongoDB 3.6 за дефиниране на персонализирано присъединяване условия :

db.history.aggregate([
    {
        $lookup: {
            from: "childsgroup",
            let: { child_id: "$child_id" },
            pipeline: [
                { $match: { $expr: { $in: [ "$$child_id", "$childs.id" ] } } },
                { $unwind: "$childs" },
                { $match: { $expr: { $eq: [ "$childs.id", "$$child_id" ] } } },
                { $replaceRoot: { newRoot: "$childs" } }
            ],
            as: "childInfo"
        }
    }
])

Първо $match добавен за подобряване на производителността:искаме да намерим само тези документи от childsgroup които съдържат съответстващ child_id и след това можем да съпоставим поддокументи след $unwind етап.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Шаблони за проектиране за слой за достъп до данни

  2. Запитване на масив от масиви в MongoDB

  3. mongod, mac os x - rlimits предупреждение

  4. Има ли по-добра обвивка за mongo.exe

  5. Миграция на данни от Oracle към Mongo DB