昨天检查了MongoDB文档并注意到他们的很多运营商有两个条目,一个在projection下,一个在query下。
两者有什么区别?他们似乎几乎涵盖了同样的事情。
答案 0 :(得分:5)
查询实际上是查询记录,而投影是文档字段的投影。
另一种说法是,SQL中的投影为SELECT
,查询为WHERE
。
让我们看一个例子(http://docs.mongodb.org/manual/reference/operator/elemMatch/):
db.users.find(
{ sessions: {$elemMatch:{session_id: 23}} },
{ sessions:{$elemMatch:{session_id: 23}} }
)
此查询使用$ elemMatch匹配sessions
文档的user
字段中的元素,同时使用相同的运算符投影找到的session
。
当然,实际上你不会这样写这样的查询,因为你可以为投影部分做sessions.$
但我用这种方式写出来以更完整的方式向你展示。