鉴于此文档保存在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) 我已经开始了一个基于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中提取"名称"字段.
感谢任何暗示,因为你读到我是流星的新手 - 并尝试理解事物是如何联系在一起的.
迈克尔