我是 mongodb 的新手,我有2个查询: 弗里斯特:
db.movies.aggregate([
{ "$match": {
$and : [
{ "imdb.rating": { $lt: 7 }},
{$and: [ {"genres": { "$ne": "Crime" } }, {"genres": { "$ne": "Horror" } }]},
{$and: [ {"languages": { "$eq": "English" } }, {"languages": { "$eq": "Japanese" } }]},
{$or: [ {"rated": { "$eq": "PG" } }, {"rated": { "$eq": "G" } }]}
]
}
}
]).itcount()
结果:23
现在有了这个:
db.movies.aggregate([
{ "$match": {
"imdb.rating": { $lt: 7 },
$and: [ {"genres": { "$ne": "Crime" } }, {"genres": { "$ne": "Horror" } }],
$or: [ {"rated": { "$eq": "PG" } }, {"rated": { "$eq": "G" } }],
$and: [ {"languages": { "$eq": "English" } }, {"languages": { "$eq": "Japanese" } }]
}
}
]).itcount()
结果是25,
但是现在我无法理解两个查询之间有什么区别,可以帮忙吗?
答案 0 :(得分:1)
没有功能差异。当您提供多个表达式和一个简单的键时,$match
隐式使用$and
:值表达式是key: {$eq: value}
的缩写,例如。
$match: {a:3, b:"buzz"}
是:
的简写$match: {$and: [{a:{$eq:3}}, {b:{$eq:"buzz"}} ] }