Node.js Mongoose中两个文档的合并数组

Node.js Mongoose中两个文档的合并数组,node.js,mongodb,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: S

我在应用程序中有以下模式

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 用户2
将用户2的设备数组合并到用户1并完全删除用户2的正确方法是什么?

您可以获取用户1的设备并更新用户2(假设已获取用户2):


从示例文档中可以看出,User2已经合并到User1中。那么您希望得到什么结果呢?用户1和用户2是完全不同的两个文档。我想将用户2的设备数组合并到用户1,最后删除用户2。我想知道做这件事的最好方法是什么谢谢。我期待使用findOneAndUpdate、$push$set等,因为我不知道它们是如何工作的。再次感谢您的帮助。我们可以只通过一个查询no user2.devices.addToSet(user1.devices)?如果您已经有
user1.devices
而没有获取
user1
是。
{
  "_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
}
{
  "_id": ObjectId("57ec014111cb350404e30005"),
  "devices": [
    ObjectId("57ec016911cb350404e30006")
  ],
  "isEnabled": true,
  "createdOn": new Date(1458507393521),
  "__v": 1
}
UserModel.findById(user1Id)
.then(function (user1) {
    // addToSet will ensure no duplicates in user2.devices
    user2.devices.addToSet(user1.devices);
});