我试图弄清楚我的一位用户是否有任何与代码相关的数据" 2" (这意味着一个错误)所以我搜索了mongoose
Entry.find({userid: req.user._id, 'goalSummary.2': {$exists: true}})
goalSummary
属性的类型为mongoose.Schema.Types.Mixed
,其键与目标代码(如果重要,则为字符串)和作为值的对象相同。
我收到了16个结果,每个结果都是goalSummary
,如下所示:
goalSummary: {
"1": {
outcomes: 1,
intendedcount: 1,
extrascount: 0,
notdonecount: 0,
enough: "e"
},
"3": {
outcomes: 1,
intendedcount: 1,
extrascount: 0,
notdonecount: 0,
enough: "e"
},
[...]
}
...即没有2
键。为什么这些匹配? 2设置为undefined
但未删除?它成功地没有匹配数百个其他条目。
答案 0 :(得分:0)
“field.2”仅在类型的猫鼬属性中有意义。对于混合,mongoose不知道关于你的文档的任何,所以只要有值,它就会匹配所有内容。
另一方面,我自己被烧了,看到别人重复它,我也建议你不要用钥匙来命名。而是做{key:1,value:{outcome:1 ...}}。