Mongodb 嵌套数组中的Mongoose更新实例

Mongodb 嵌套数组中的Mongoose更新实例,mongodb,mongoose,Mongodb,Mongoose,在Mongoose中,假设我从MongoDB中提取了一个用户对象,该用户有一系列兴趣。现在我得到了该用户感兴趣的一个实例 var user=… var利息= //对兴趣做一些改变 如何在数据库中的用户数组中更新感兴趣的对象(对其进行一些更改之后) 编辑 这是我目前的代码。它不工作,也不会出错 User.update( { '_id': user._id, 'interests._id': interest._id

在Mongoose中,假设我从MongoDB中提取了一个用户对象,该用户有一系列兴趣。现在我得到了该用户感兴趣的一个实例

var user=…
var利息=

//对兴趣做一些改变

如何在数据库中的用户数组中更新感兴趣的对象(对其进行一些更改之后)

编辑

这是我目前的代码。它不工作,也不会出错

    User.update(
        {
            '_id': user._id,
            'interests._id': interest._id
        },
        {
            '$set': {
                'interests.$.xyzProperty': interest.xyzProperty
            }
        },
        function(err,obj){//some error checking}
    );

如果为每个利息设置了If,则可以通过$operator访问利息

user document
{
    _id: ObectId('54b568531ef35a7c348f21f2'),
    interests: [
        {
            _id: 12345,
            title: 'Tacos',
            description: 'I Love tacos'
        },
        {...},
        {...},
    ]
}
如果我知道要更新哪个兴趣子文档,我只需像这样查询它:

UserModel.find({_id: ObectId('54b568531ef35a7c348f21f2'), 'interests.i_d': 12345}).lean().exec(function (err, user) {

    var interest =  ... //find specific interest
    interest.description = 'I love tacos... Like, a lot'.

    UserModel.update(
        {
            _id: user._id, 
            'interests._id': interest._id
        },
        {
            $set: {
                'interests.$.description': interest.description
            }
        },
        function (err, update) {
           console.log(err, update);
        }
    );
});

这使用$positional运算符并更新特定的子文档(或数组中的项)。

这并不能真正回答我的问题,因为我尝试使用Mongoose,而不是mongo命令。我将其更改为Mongoose命令。它们几乎完全一样。另外,在这里读一读:这可能是有益的。你试过什么?你有密码吗?如果在用户对象内修改兴趣对象,则应该能够使用