在猫鼬中选择带有$的子文档

时间:2018-10-26 10:18:13

标签: javascript node.js mongodb mongoose

这是我的文档结构:

"event": {
    "attendants": {
        "seekers": [
            {
                "$oid": "5bcdabd27e51de001576d289"
            },
            {
                "$oid": "5bc9b39c1a48dd0d7d521924"
            },
        ],
        "employers": [
            {
                "id": {
                    "$oid": "5bcda6477e51de001576d287"
                },
                "boothVisits": []
            },
            {
                "id": {
                    "$oid": "5bd0787e0f64cd001563ddbf"
                },
                "boothVisits": [
                    {
                        "$oid": "5bcda6477e51de001576d287"
                    },
                    {
                        "$oid": "5bd0787e0f64cd001563ddbf"
                    },
                ]
            },
        ]
    },
}

我需要选择雇主表中当前用户ID的事件。但是那里也有boothVisits,它阻止了简单的in检查。这就是我试图做的

Event.find().where('attendants.employers.$.id').equals(req.user._id).catch(e => console.log(e)),

但是它不起作用。我想念什么?我假设我以错误的方式使用了$

1 个答案:

答案 0 :(得分:1)

如果要退回整个文档,则无需使用$

只需如下使用:

const mongoose = require('mongoose');
Event.find({"attendants.employers.id": mongoose.Types.ObjectId(req.user._id)}),

这将检查雇主数组下的id(如果找到),则将退回整个事件。