相关疑难解决方法(0)

如何部分更新MongoDB中的对象,以便新对象与现有对象重叠/合并

鉴于此文档保存在MongoDB中

{
   _id : ...,
   some_key: { 
        param1 : "val1",
        param2 : "val2",
        param3 : "val3"
   }
}
Run Code Online (Sandbox Code Playgroud)

对新信息的对象param2,并param3从外面的世界需要保存

var new_info = {
    param2 : "val2_new",
    param3 : "val3_new"
};
Run Code Online (Sandbox Code Playgroud)

我想在对象的现有状态上合并/覆盖新字段,以便不会删除param1

这样做

db.collection.update(  { _id:...} , { $set: { some_key : new_info  } } 
Run Code Online (Sandbox Code Playgroud)

将导致MongoDB完全按照要求执行,并将some_key设置为该值.取代旧的.

{
   _id : ...,
   some_key: { 
      param2 : "val2_new",
      param3 : "val3_new"
   }
}
Run Code Online (Sandbox Code Playgroud)

MongoDB只更新新字段的方法是什么(没有明确说明它们)?得到这个:

{
   _id : ...,
   some_key: { 
        param1 : "val1",
        param2 : "val2_new",
        param3 : "val3_new"
   } …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-java

157
推荐指数
9
解决办法
16万
查看次数

如何部分更新meteor.users.profile?

我已经开始了一个基于meteor样板的min应用程序和模块accounts-ui.

有一个集合创建了调用用户,其中一个元素是profile,这又有一个名为"name"的元素,它获取登录名.

在此测试应用程序中,可以选择更新用户配置文件.更新的数据来自表单提交.我在这里附上了事件监听器

Template.profile.events({
  'submit form': function(event) {
    event.preventDefault();
    var data = SimpleForm.processForm(event.target);
    Meteor.users.update(Meteor.userId(), {$set: {profile: data}});
  }
});
Run Code Online (Sandbox Code Playgroud)

所以数据包含表格中的所有内容.登录名"name"不包含在表单中,因此也不包含在数据中.

在更新之前,我有users.profile.name - >包含更新后的数据我有users.profile.* - >*等于表单中的所有内容,但"名称"消失了.

最后:谁能保留profile.name字段?最后,我喜欢在users.profile中从PLUS中提取"名称"字段.

感谢任何暗示,因为你读到我是流星的新手 - 并尝试理解事物是如何联系在一起的.

迈克尔

meteor meteor-accounts

14
推荐指数
2
解决办法
1万
查看次数

标签 统计

meteor ×1

meteor-accounts ×1

mongodb ×1

mongodb-java ×1