这是模式的相关部分:
{
info: {
// item_info can be undefined
item_info: {
enchants: [{name: String, level: Number}]
}
}
}
info和item_info都是独立的模式,_id设置为false(如果相关,则为dk(
这是一个示例查询:
{"info.item_info.enchants": {$all: [{name: "growth", level: 5}, {name: "protection", level: 5}]}}
在MongoDB Compass中抛出该查询可以正常工作。返回附魔字段中同时包含{name:"growth",级别:5}和{name:"protection",级别为5}的所有文档
在<型号名称>。find((返回没有item_info字段(?(的所有文档
相同的查询,但在中使用$而不是$all可以按预期工作(返回数组中有任何一个元素的文档(,也可以不使用运算符直接放入数组(返回恰好有这两个元素的文件(
附魔场过去看起来是这样的:
// skipping the other fields
enchants: [
{"protection": 5},
{"growth": 5}
]
而不是我现在所拥有的名称和级别字段以及$all运算符工作得很好。
有什么解决办法吗?
原来我还更改了模式中的一些内容。
附魔场过去是enchants: Array
,当它工作正常时,而不是
CCD_ 2。
显式设置数组的内容类型似乎会破坏对数组的$all
查询。