Подтвердить что ты не робот

Используя $и с $match в mongodb

Я пытаюсь использовать следующий запрос в MongoDB, но он не работает.

db.test.aggergate(
$match: {$and: [type: {$in: ["TOYS"]}, type: {$nin: ["BARBIE"]}, time: 
{$lt:ISODate("2013-12-09T00:00:00Z")}]}})

В нем говорится недопустимый символ ":".

Можно ли использовать $и $match? Я видел пример на этом форуме $или с $match, поэтому я предположил, что это возможно.

Заранее благодарим вас за помощь и рекомендации.

4b9b3361

Ответ 1

$и с $match работает нормально.

У вас есть синтаксические ошибки в вашем запросе. Попробуйте это.

db.test.aggregate([
                   { 
                     $match: {
                          $and: [ 
                              {type: {$in: ["TOYS"]}}, 
                              {type: {$nin: ["BARBIE"]}}, 
                              {time: {$lt:ISODate("2013-12-09T00:00:00Z")}}
                          ]
                     }
                   }
                  ])

И для того, что вы пытаетесь сделать, вам не нужен $and.

Ответ 2

Если кто-то хочет отказаться от моего ответа, это нормально, это типичный вопрос с отсутствием исследований

db.test.find( {$and: [ {"type": {$in: ["TOYS"]}}, 
                       {"type": {$nin: ["BARBIE"]}}, 
                       {"time": {$lt:ISODate("2013-12-09T00:00:00Z")}}
                     ]
})

И работает с FIND, получает массив совпадений (но это не команда соответствия) Агрегирующая структура предназначена для чего-то совершенно другого, как сказано в слове, для агрегирования (подсчета, суммы, avg и т.д., Чтобы группировать или разматывать и т.д.)

Ответ 3

{
  $match: {
    $or:[
      {'sender':sender, 'recipient':recipient},
      {'recipient':sender,'sender':recipient}
    ]
  }
}

используя $или

Ответ 4

Ниже показано, как я делаю со многими $и вместе с $или

User.aggregate([
 {
  $lookup:{
   from:'influencers',
   localField:'_id',
   foreignField:'user',
   as:'influencer'
 }
 },
 { $match:{ '$and': 
  [ { '$and': [ { 'influencer.aboutMe.birthday': { '$lte': 2017-09-11T09:10:07.283Z } } ] },
  { '$and': [ { 'influencer.aboutMe.minPrice': { '$gte': 0 } } ] },
   { '$and': 
    [ { '$or': 
        [ { '$and': [ { 'influencer.followed_by': { '$gte': 0 } } ] },

         { '$and': [ { 'influencer.youTubeSubscribercount': { '$gte': 
  0 } } ] } ] } ] },
 { 'influencer.isAdminverified': true },
 { 'influencer.status': 'Verified' } ] } }

]);