我遇到Mongoose的问题,我想使用模块mongoose更新MongoDB中的文档,这是我的架构:
var User = new mongoose.Schema({
name: String,
email: String,
list_houses: [{
id_house: String,
price: Double
}],
...
});
当我想添加一个值' id_house'不重复使用下面的代码,这不起作用
User.update({'name': Name},
{$addToSet: {'list_houses': { 'id_house': new_houses , 'price': new_prices } } } ,
if(err)console.log(err);
console.log(result);
});
执行此操作时,BD中的结果为:
>db.users.find().pretty()
{
"__v" : 0,
"_id" : qweqweqweqweqweqwe,
"email" : adadasdweqwe@gmail.com,
"name" : Richard Smith,
"list_houses" : [ ],
.....
}
我也使用了$ push,但它都不起作用,我现在还不知道我的代码有什么问题。
答案 0 :(得分:0)
很抱歉告诉您,但$addToSet
不能使用数组中的Object值。
true
但不会使用对象
因此{a:1}
不等于{a:1}
。当然因为对象与参考进行比较。
现在解决问题的方法是你必须手动完成
使用find获取列表。如果您的对象存在,请检查列表。如果没有添加到列表中。
您还可以在查找查询中指定对象详细信息,只需查找可能不包含此数据(要插入)的文档