我的mongoDB集合中有3个简单的文档:
{
_id: ObjectId('1'),
item: 'test1',
tags: [ 'red', 'blank' ]
},
{
_id: ObjectId('2'),
item: 'test2',
tags: [ 1, 2, 3, [ 'red', 'blank' ] ]
},
{
_id: ObjectId('3'),
item: 'item3',
tags: [ 1, 2, 3, [ [ 'red', 'blank' ] ] ]
}
当我使用这个mongoh命令时(假设我的集合在我的数据库中称为集合):
db.collection.find({tags: ['red', 'blank']})
它返回这些文档中的前两个文档.这个查询直接来自MongoDB的文档,它声明:"[This]Example查询的所有文档中,字段标记值是一个数组,其中恰好有两个元素,即按指定顺序排列的"red"和"Blank"."source个
然而,在第二个文档中,我的字段‘tags’的值不是"恰好是两个元素的数组".这会导致返回的文档与我查询的值不完全相同.
第三个文档将由我使用的查询返回,所以它似乎没有递归地搜索子array.
我是否使用了错误的查询?如果是这样的话,文档中声明"...其中的字段标记值是一个恰好有两个元素的array..."就没有意义了.或者这只是一个可能的错误,因为根据他们的文档,这似乎不是他们希望该查询返回的内容.
我可以简单地过滤我的结果并获得我想要的信息,我的问题与我是否误解或使用错误的查询有关.
我还try 在atlas中使用这个查询{tags: ['red', 'blank']}
,它仍然返回带有_id 1和2的文档,但不返回3.