在mongodb中使用$and和$match
我试图在MongoDB中使用以下查询,但它不起作用在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
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)。