2016-11-23 60 views
1

使用猫鼬,我如何添加更多的项目对象而不替换现有的?猫鼬:添加更多项目到现有的对象

User.findOneAndUpdate(
    { userId: 0 }, 
    { userObjects: { newItem: value } } 
); 

上面代码的问题是,它会清除无论在那里之前,用的newitem替换它时,我想它只是另一个项目添加到userObjects(像JavaScript数组推送功能)。

+0

你的'userObjects'是一个数组吗?你能分享你的模式吗? –

+1

看看我在这个[问题](http://stackoverflow.com/questions/40741373/)最近的答案为指针。 – chridam

+0

@chridam明白了,谢谢! – omidh

回答

0

根据你的问题,我猜userObjects是一个数组。

您可以尝试$push将项目插入array

User.findOneAndUpdate(
    { userId: 0 }, 
    { $push : {"userObjects": { newItem: value } }}, 
    {safe :true , upsert : true},function(err,model) 
    { 
     ... 
    }); 

欲了解更多信息,请阅读MongoDB $push reference

希望它可以帮助你。如果您提供了架构,我可以帮助更好。

0

只需创建一个名为UserObjects的新集合并执行类似操作。

UserObject.Insert({ userId: 0, newItem: value }, function(err,newObject){ 

}); 

每当你想从一个用户,这些用户对象,那么你可以使用monogoose的query population填充与其他收藏品相关的数据父对象做到这一点。如果不是,那么你最好的办法就是使userObjects成为一个数组。