0

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

4

1 回答 1

0

“field.2”仅在 Array 类型的猫鼬属性中有意义。对于混合,猫鼬对你的文档一无所知,所以它会匹配所有内容,只要有一个值。

在旁注中,我自己被烧伤并看到其他人重复它,我也可以建议你不要使用键来命名东西。而是做类似 { key: 1, value: {outcomes: 1 ... }} 的事情。

于 2015-12-24T20:56:36.430 回答