【发布时间】:2013-08-15 05:44:26
【问题描述】:
嘿,所以我正在尝试设置一个 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) {
}
【问题讨论】:
-
您的字段名称似乎不正确,因此查询与您提供的示例文档不匹配。请在尝试更新之前尝试运行查询以确保其正常工作。
-
嘿,如果数组存在,则查询有效,否则我需要调用 $set...friendStatus 在示例顶部文档中是 (friends),标签是 (TAGS),fuId 是 ( id)...如果我使用 $set 首先创建数组然后将其更改为 $addToSet 来运行它(因为此时数组存在。)