node.js - 如果数组存在,如何调用 $addToSet,如果数组不存在,则如何在一个查询中调用 $set?

标签 node.js mongodb mongoose

嘿,我正在尝试设置一个 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) {    


}

最佳答案

目前无法使用 MongoDB 更新语法来完成您想要的操作。

这里有一个功能可以实现类似的功能:https://jira.mongodb.org/browse/SERVER-6566

关于node.js - 如果数组存在,如何调用 $addToSet,如果数组不存在,则如何在一个查询中调用 $set?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18195228/

相关文章:

javascript - 查询 mongoose 中早于 X 分钟的文档

javascript - 如何使用邮件服务器和 nodejs 从我的服务器发送电子邮件

javascript - 使用 node.js 和 sequelize 将表单数据插入 mysql 数据库表

node.js - 意外的 token 导入

ruby-on-rails - MongoDB 对 HABTM 关系(Mongoid、RoR)进行条件聚合查询?

javascript - Mongoose Node js 中的“TypeError : meme. find(...).forEach 不是函数”?

javascript - 运行 Node 脚本时出错,找不到模块 'mongodb/node_modules/bson'

javascript - 使用 Node.js 进行视频游戏流传输

node.js - 没有$ unwind的$ lookup多个级别?

angular - 无法读取未定义的 CRUD 操作的类型 '_id ' 的属性