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

документи за заявки, които зависят от стойностите на други документи в mongodb

Опитайте некорелирани подзаявка от 3.6 за вашия случай на употреба.

Нещо като

User.aggregate(
 [{$lookup:{
   from: "users",
   pipeline:[
    {$match: {_id:mongoose.Types.ObjectId(id)}},
    {$project: {_id:0,blockedIds:1}}
   ],
   as: "noncr"
 }},
 {$match:{
   $expr:{
     $not:[
      {$in:[
        $_id,
        {$arrayElemAt:["$noncr.blockedIds",0]}
      ]}
    ]
  }
}},
{$project:{noncr:0}}]
)

$lookup за изтегляне на „blockedIds“ за входен идентификатор, последван от $match за филтриране на документите, където "_id" не е в списъка с блокирани идентификатори.

$expr позволява използването на оператори за сравнение на агрегиране в етап $match.

$arrayElemAt за извличане на първия елемент от $lookup масив.

$in за да сравните _id с blockedIds.

$project с изключение за премахване на полето "noncr" от крайния отговор.

Моля, обърнете внимание, когато правите тестова заявка, използвайте името на колекцията, а не името на модела или схемата в атрибута „от“ на етапа на търсене.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. psycopg2 се проваля при изпълнение на много израз със синтактична грешка

  2. Как да конфигурирам MongoDB клъстер, който поддържа сесии?

  3. Драйвер на Promise и nodejs MongoDB

  4. Трябва ли да използвам ObjectID или uid (имплементиран от мен), за да идентифицирам потребител?

  5. Неуспешни предварително компилирани активи на Heroku