如果我对数组的查询有效或是某种黑客或错误,我会感到困惑。
我试图找到文件
db.test.find({field.: {"$exists": true}})
如你所见,我有field.
没有索引位置。
它做了我认为它应该做的事情,但在文档中没有任何关于它的内容。
如果这是一个错误,那么修复mongo后我的查询将无效。
我正在使用版本3.2
谢谢!
答案 0 :(得分:1)
唯一可以找到的方法是潜入source code。
如您所见,这是预期的结果。这里发生的是MongoDB在这里没有对字段名称中的点做任何事情。怎么样?
使用点符号访问字段时,MongoDB使用点作为分隔符拆分字符串。从那里开始,根据两个子串的值,它决定做什么。这里声明L88-L105
已执行。
答案 1 :(得分:0)
您提到的代码没有给出任何错误,但您不应该使用它不是mongodb功能,可能在将来的版本中不起作用。
正如我检查的那样,这只适用于数组,如果你尝试使用普通字段,它就不会给你记录,即使它存在而且对于数组来说即使数组为空也满足条件
因此,如果要检查数组是否为空,请使用
db.test.find({"field.1": {"$exists": true}})