首页 > 解决方案 > Mongoose 在复杂结构中查找/项目

问题描述

在由对象和数组组成的结构中查找行时遇到问题。

这是我的猫鼬模式:

var subscriberSchema = mongoose.Schema({
    chkpt: {
        subDocs:[
            {
                id: String,
                newValues: {
                    attributes:[
                        {
                            _id: {
                                name: String
                            },
                            value: [
                                {
                                    string: String
                                }
                            ]
                        }
                    ]
                }
            }
        ] 
    }
});

这是我尝试在该架构上应用的请求:

Subscriber.find({'chkpt.modifiedSubDocs.newValues.attributes.id.name':'blabla'}, 'chkpt.modifiedSubDocs.newValues.attributes.value.string', function (err, subscribers) {
        if (err) return handleError(err);
        // Prints the json
        res.json(subscribers);

问题是返回的 json 包含每个属性数组,其 id 中至少包含一个“blabla”。我希望它只返回与“属性”数组行对应的值,该数组的 id 名为“blabla”。

如果您知道这样做的方法,请不要犹豫;)

谢谢,

弓箭

标签: node.jsmongodbmongooseschema

解决方案


您需要使用$放置运算符,在您的投影中,尝试放置chkpt.subDocs.$.newValues.attributes.$.value.string


推荐阅读