数组查询“字段”。没有位置索引有效吗?

时间:2016-10-05 14:17:26

标签: mongodb mongodb-query

如果我对数组的查询有效或是某种黑客或错误,我会感到困惑。

我试图找到文件

db.test.find({field.: {"$exists": true}})

如你所见,我有field.没有索引位置。 它做了我认为它应该做的事情,但在文档中没有任何关于它的内容。

如果这是一个错误,那么修复mongo后我的查询将无效。

我正在使用版本3.2

谢谢!

2 个答案:

答案 0 :(得分:1)

唯一可以找到的方法是潜入source code

如您所见,这是预期的结果。这里发生的是MongoDB在这里没有对字段名称中的点做任何事情。怎么样?

使用点符号访问字段时,MongoDB使用点作为分隔符拆分字符串。从那里开始,根据两个子串的值,它决定做什么。这里声明L88-L105已执行。

答案 1 :(得分:0)

您提到的代码没有给出任何错误,但您不应该使用它不是mongodb功能,可能在将来的版本中不起作用。

正如我检查的那样,这只适用于数组,如果你尝试使用普通字段,它就不会给你记录,即使它存在而且对于数组来说即使数组为空也满足条件

因此,如果要检查数组是否为空,请使用

db.test.find({"field.1": {"$exists": true}})