使用$和匹配字段的多个值并使用$ match和$ in之间有什么区别或优势吗?
db.collectionOne.aggregate([
{$match:{name:{'$in':['Jack','Jill']},
city:{'$in':['LA','NY']}
}
}])
或
db.collectionOne.aggregate([
{$match:{
$and:[{name:{'$in':['Jack','Jill']},
city:{'$in':['LA','NY']}
}
]}
}])
或者应该$和仅用于数值以获得更好的性能?
答案 0 :(得分:0)
首先,我认为你的例子中有一个拼写错误。它应该是
db.collectionOne.aggregate([
{$match:{
$and:[{name:{'$in':['Jack','Jill']}},
{city:{'$in':['LA','NY']}
}
]}
}])
您使用的两个代码段与本页提及的内容相同 https://docs.mongodb.com/manual/reference/operator/query/and/
请注意
MongoDB在指定逗号时提供隐式AND操作 分隔的表达式列表。使用显式AND与$和 当相同的字段或操作符必须时,操作符是必需的 在多个表达式中指定。
所以当你需要在同一个键上应用两个条件时,使用$,如下所示。
db.collectionOne.aggregate([
{$match:{
$and:[{name:{'$in':['Jack','Jill','Bill','Kill']}},
{name:{'$nin':['Matt','Bill']}
}
]}
}])
以上示例并不好,但它解释了方案