node.js - 在 Mongoose 中合并两个文档的数组

标签 node.js mongodb mongoose

我的应用程序中有以下架构

var UserSchema = mongoose.Schema({
    email: {type: String, index: {unique: true, sparse: true}},
    password: String,
    createdOn: {type: Date, default:Date.now },
    purchaseDate:Date,
    expiryDate:Date,
    purchaseID: {type: String, index: {unique: true, sparse: true}},

    isEnabled: {type: Boolean,default: true},
    devices:[{
        type:mongoose.Schema.Types.ObjectId,
        ref: 'Device'
    }]

});

var DeviceSchema = mongoose.Schema({
    owner : { type:mongoose.Schema.Types.ObjectId, ref: 'User' },
    uuid:String,
    token: String,
    createdOn: {type: Date, default:Date.now },
    lastSeen: Date,
    isEnabled: {type: Boolean, default:true }
});

假设我有以下用户

用户1

{
  "_id": ObjectId("56ec014111cb350404e30005"),
  "purchaseDate": new Date("2015-10-17T17:01:26+0300"),
  "purchaseID": "570000118683786",
  "devices": [
    ObjectId("56ec016911cb350404e30006")
  ],
  "isEnabled": true,
  "createdOn": new Date(1458307393521),
  "__v": 1
}

用户2

{
  "_id": ObjectId("57ec014111cb350404e30005"),
  "devices": [
    ObjectId("57ec016911cb350404e30006")
  ],
  "isEnabled": true,
  "createdOn": new Date(1458507393521),
  "__v": 1
}

将用户 2 的设备数组合并到用户 1 并完全摆脱用户 2 的正确方法是什么?

最佳答案

您可以获取 User1 的设备并更新 User2(假设 User2 已获取):

UserModel.findById(user1Id)
.then(function (user1) {
    // addToSet will ensure no duplicates in user2.devices
    user2.devices.addToSet(user1.devices);
});

关于node.js - 在 Mongoose 中合并两个文档的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36246456/

相关文章:

html - 如何使用外部html文件在mailgun中发送数据?

mongodb - 有什么方法可以在 mongo 中隐藏数据库管理员的收集数据吗?

node.js - 当将具有node_modules的本地Node.js项目Git repo推送到Heroku时,本地node_modules是否会覆盖Heroku上的那些?

mongodb - 尝试连接到 mongodb 容器时,GOLANG 客户端 docker 容器无法访问

javascript - findByIdAndUpdate 不断被捕获在 .catch 中

node.js - 如何使用虚拟方法从 Mongoose 模式获取枚举值?

node.js - 我可以在 Netbeans 中开发一个显示 'Missing npm modules' 警告的新 Laravel 项目吗?

javascript - 如何使用node-telegram-bot-api为每个用户执行相同的代码?

javascript - 将多个 PouchDB 数据库同步到一个 CouchDB 数据库

JavaScript Object.hasOwnProperty() 问题