在mongodb中使用$和$match

ufj5ltwl  于 2022-12-26  发布在  Go
关注(0)|答案(4)|浏览(125)

我尝试在MongoDB中使用以下查询,但它不起作用。

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

显示无效字符“:“。
有可能用$和$match吗?我在这个论坛上看到过一个$或$match的例子,所以我推测这是可能的。
提前感谢您的帮助和指导。

ar7v8xwq

ar7v8xwq1#

$和与$匹配的工作就好了。
查询中有语法错误。请尝试以下操作。

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

对于您正在尝试做的事情,您不需要$and

col17t5w

col17t5w2#

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

使用$或

pn9klfpd

pn9klfpd3#

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

AND与FIND一起工作,接收一个匹配数组(但它不是一个匹配指令)。聚合框架用于完全不同的东西,就像这个词所说的,用于聚合(计数、求和、平均值等值得分组或展开的内容)

4xy9mtcn

4xy9mtcn4#

先$lookup后$match的示例

db.orders.aggregate([
  {
    "$lookup": {
      "from": "user",
      "localField": "user",
      "foreignField": "_id",
      "as": "user"
    }
  },
  {
    "$unwind": "$user"
  },
  {
    "$match": {
      "$and": [
        {
          "privacy.mode": {
            "$gt": 0
          }
        },
        {
          "user.privacy.mode": {
            "$gt": 0
          }
        }
      ]
    }
  }
])
``

相关问题