|
1
26
实际上,文档中列出了
这意味着,与其检测“元素本身”是否在数组中,实际要测试的是数组的“内部元素”,以查看它是什么类型。
现在文档本身建议使用
但我觉得这很可怕,因为有更好的方法。
诀窍在里面
"dot notation"
,您在哪里要求
这只是基本情况,如果“0”元素存在,那么字段就存在,因此数据是一个数组。 一旦你理解了这个逻辑前提,那么它就是一个非常简单的测试。唯一不能与之匹配的是一个“真正空的”数组,在这种情况下,如果需要的话,您可以返回到JavaScript选项。但这实际上可以使用索引,因此最好使用后一种形式。 |
|
|
2
5
下面是一种更好的方法来完成您最初的要求;即实际检查某个字段是否包含数组类型值:
MongoDB的数组$type功能虽然有很好的文档记录,但与所有其他$type检查不一致,显然不适用于这个用例,但是由于大约2.6,您可以使用上面的查询来检查值是否是数组(空的或不空的)。 我说这比当前选择的答案“更好”,因为不建议通过$where执行代码,除非标准查询构造确实无法完成任务。 为了详细说明,由于在执行代码中缺乏使用索引的能力,因此不建议使用$where。更多详细信息: https://docs.mongodb.com/manual/reference/operator/query/where/#considerations 另外,如果要特别检查非空数组,请使用以下命令:
从技术上讲,这一个比当前答案对应的$exists解决方案更好,因为字段可能有一个名为“0”的非数组对象,并且将匹配为“非空数组”,在这种情况下这是错误的。 |
|
Plup · 连接失败时,PyMongo异步客户端未引发异常 1 年前 |
|
|
Yusuf Damista · 将mongodb节点代码转换为php 1 年前 |
|
|
sachin p · MongoDB docker的默认用户和密码 2 年前 |