Mongodb 嵌套数组中的Mongoose更新实例
在Mongoose中,假设我从MongoDB中提取了一个用户对象,该用户有一系列兴趣。现在我得到了该用户感兴趣的一个实例 var user=…Mongodb 嵌套数组中的Mongoose更新实例,mongodb,mongoose,Mongodb,Mongoose,在Mongoose中,假设我从MongoDB中提取了一个用户对象,该用户有一系列兴趣。现在我得到了该用户感兴趣的一个实例 var user=… var利息= //对兴趣做一些改变 如何在数据库中的用户数组中更新感兴趣的对象(对其进行一些更改之后) 编辑 这是我目前的代码。它不工作,也不会出错 User.update( { '_id': user._id, 'interests._id': interest._id
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命令。它们几乎完全一样。另外,在这里读一读:这可能是有益的。你试过什么?你有密码吗?如果在用户对象内修改兴趣对象,则应该能够使用