1

嘿,所以我正在尝试设置一个在 mongodb 文档中不存在的新数组,但我希望能够在不不断替换值的情况下将其他文档放入数组中。

例如:

users {
    id: 'value1',
    name: {value2},
    friends: [
               {friendID: 'value x', type: 'valuey', TAGS: [tag1, tag2]}

             ]

基本上 TAGS 不存在,我想创建它并添加 tag1,如果它确实存在,我只想将 tag2 添加到数组中......

这是为了使上面示例中的变量与我的数据库中的变量有关:

friendStatus = friends,
fuId = friendID,
labels = TAGS

这是我的尝试:

Friend.findOneAndUpdate({userId: mongoose.Types.ObjectId(req.signedCookies.userid), 
'friendStatus.fuId': mongoose.Types.ObjectId(req.body.user)}, 
{$addToSet: {'friendStatus.$.labels': req.body.labelNew}}
    , function(err, userX) {    


}
4

2 回答 2

0

目前没有办法用 MongoDB 更新语法做你想做的事。

这是一个允许这样的功能:https ://jira.mongodb.org/browse/SERVER-6566

于 2013-08-14T21:44:26.257 回答
-2

您应该使用“upsert”标志:

Friend.update({userId: req.signedCookies.userid, 'friendStatus.fuId': req.body.favourites}, {$addToSet: {'friendStatus.$.labels': req.body.labelNew}}, {upsert:真},函数(错误,项目){...})

但是,'friendStatus.$.labels' 说“我有多个朋友状态,我希望此操作适用于我的查询匹配的任何/所有这些”(至少,afaict)——所以我不肯定这将适合你。http://docs.mongodb.org/manual/reference/operator/positional/ (另请参阅http://docs.mongodb.org/manual/core/update/上的 upsert 标志)

于 2013-08-12T21:32:57.343 回答