MongoDB 运算符顺序

MongoDB order of operators

我正在寻找电影:

我知道我可以这样查询:

.find({ "genres": ["Comedy", "Crime"] })

但是,我不明白为什么以下方法不起作用:

.find({ 
  "genres.0": "Comedy",
  "genres": { $size: 2 },
  "genres": { $all: ["Comedy", "Crime"] }
}

因此,我得到如下条目:

["Comedy", "Crime", "Drama"]

但是为什么呢?

您的查找对象中有两次 genres,这意味着第二个条目会覆盖第一个条目。当您对同一字段有两个条件时,您要么需要使用 $and 运算符,要么像这样组合它们:"genres": { $size:2, $all: ["Comedy", "Crime"] }