为什么这个mongoose搜索匹配这些文件?

时间:2015-12-24 18:48:30

标签: node.js mongodb search mongoose mongoose-schema

我试图弄清楚我的一位用户是否有任何与代码相关的数据" 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但未删除?它成功地没有匹配数百个其他条目。

1 个答案:

答案 0 :(得分:0)

“field.2”仅在类型的猫鼬属性中有意义。对于混合,mongoose不知道关于你的文档的任何,所以只要有值,它就会匹配所有内容。

另一方面,我自己被烧了,看到别人重复它,我也建议你不要用钥匙来命名。而是做{key:1,value:{outcome:1 ...}}。