在mongodb中使用$and和$match

在mongodb中使用$and和$match,mongodb,match,Mongodb,Match,我试图在MongoDB中使用以下查询,但它不起作用 db.test.aggregate( $match: {$and: [type: {$in: ["TOYS"]}, type: {$nin: ["BARBIE"]}, time: {$lt:ISODate("2013-12-09T00:00:00Z")}]}}) 它表示无效字符“:” 是否可以使用$and和$match?我在这个论坛上看到了一个$match或$match的例子,所以我认为这是可能的 提前感谢您的帮助和指导 db.test.f

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

db.test.aggregate(
$match: {$and: [type: {$in: ["TOYS"]}, type: {$nin: ["BARBIE"]}, time: 
{$lt:ISODate("2013-12-09T00:00:00Z")}]}})
它表示无效字符“:”

是否可以使用$and和$match?我在这个论坛上看到了一个$match或$match的例子,所以我认为这是可能的

提前感谢您的帮助和指导

db.test.find( {$and: [ {"type": {$in: ["TOYS"]}}, 
                       {"type": {$nin: ["BARBIE"]}}, 
                       {"time": {$lt:ISODate("2013-12-09T00:00:00Z")}}
                     ]
})
并与FIND一起工作,接收匹配数组(但它不是匹配指令) 聚合框架用于完全不同的东西,就像单词所说的那样,用于聚合(计数、求和、平均值,等等,值得分组或展开,等等)

$match和$match可以很好地工作

查询中存在语法错误。试试这个

db.test.aggregate([
                   { 
                     $match: {
                          $and: [ 
                              {type: {$in: ["TOYS"]}}, 
                              {type: {$nin: ["BARBIE"]}}, 
                              {time: {$lt:ISODate("2013-12-09T00:00:00Z")}}
                          ]
                     }
                   }
                  ])
对于您正在尝试执行的操作,您不需要
$和

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

使用$或

阅读文档,感谢您的回复。我推测我不需要使用$,因为它在查询中是隐含的?这是一个在没有聚合框架的情况下可以完美工作的查询,使用一个常规的findI同意Maximiliano Rios,阅读本文,为什么建议他使用其他东西,而不是帮助解决他的问题?也许我们所看到的只是他全部聚集的一小部分?谢谢你的回答Maximilino。我使用了聚合,因为在匹配这些记录之后,我需要按userID进行分组。很抱歉,对问题的描述不完整。因此,我收集$,但不可能使用聚合…您可以使用$和聚合,但您不必编写它,并且隐式地使用不同的过滤器,事实上,您可以使用管道来过滤这些过滤器,以防其中一个需要不同的解决方案。
$match
需要
{}
。这意味着,它可能需要
$和
很好。嗨,阿杰……谢谢你的更正。是的,我发现$And是不需要的。谢谢大家帮助我。在这种情况下,
$和
的使用不是多余的吗?至少在MongoDB 3.2+中是这样。是的$在这里是多余的。我们有它来回答这个问题:
是否可以使用$and和$match?
我不认为
$和
$match
中是完全多余的。。。也许在最简单的情况下。。。首先,我在
$match
中直接尝试了两个独立的
$expr
条件,但没有得到正确的结果。。。必须添加
$和
,以便正确组合比较(版本3.6.2)。