假设我们有一个这种格式的对象:
var thisIsObject= {
'Cow' : 'Moo',
'Cat' : 'Meow',
'Dog' : 'Bark'
};
Run Code Online (Sandbox Code Playgroud)
我想做一个按键删除的功能:
removeFromObjectByKey('Cow');
Run Code Online (Sandbox Code Playgroud) 我有一个Mongo文档,其中包含一系列元素.
我想重置.handled数组中所有对象的属性.profile= XX.
该文件采用以下形式:
{
"_id": ObjectId("4d2d8deff4e6c1d71fc29a07"),
"user_id": "714638ba-2e08-2168-2b99-00002f3d43c0",
"events": [{
"handled": 1,
"profile": 10,
"data": "....."
} {
"handled": 1,
"profile": 10,
"data": "....."
} {
"handled": 1,
"profile": 20,
"data": "....."
}
...
]
}
Run Code Online (Sandbox Code Playgroud)
所以,我尝试了以下内容:
.update({"events.profile":10},{$set:{"events.$.handled":0}},false,true)
Run Code Online (Sandbox Code Playgroud)
但是,它仅更新每个文档中第一个匹配的数组元素.(这是$的定义行为- 位置运算符.)
如何更新所有匹配的数组元素?
如何从Mongo控制台的单个数组元素中取消设置属性.例如,如何从时间[1]中取消设置垃圾属性
{
"_id" : ObjectId("4d525ab2924f0000000022ad"),
"name" : "hello",
"time" : [
{
"stamp" : "2010-07-01T12:01:03.75+02:00",
"reason" : "new"
},
{
"stamp" : "2010-07-02T16:03:48.187+03:00",
"reason" : "update",
"junk" : "yes"
},
{
"stamp" : "2010-07-02T16:03:48.187+04:00",
"reason" : "update"
},
]
}
Run Code Online (Sandbox Code Playgroud) 我有以下格式的数千份文件:
{
"_id" : ObjectId("51e98d196b01c2085c72d731"),
"messages" : [
{
"_id" : ObjectId("520167056b01c20bb9eee987"),
"id" : ObjectId("520167056b01c20bb9eee987"),
},
{
"_id" : ObjectId("520167056b01c20bb9eee988"),
"id" : ObjectId("520167056b01c20bb9eee988"),
},
{
"_id" : ObjectId("520167056b01c20bb9eee989"),
"id" : ObjectId("520167056b01c20bb9eee989"),
}
],
}
Run Code Online (Sandbox Code Playgroud)
我需要删除重复的"id"字段.这是我尝试过的:
db.forum_threads.update({}, {$unset: {"messages.$.id": 1}}, {multi: true});
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Cannot apply the positional operator without a corresponding query field containing an array.
Run Code Online (Sandbox Code Playgroud) 我有一个MongoDB文档,如下所示:
"sport": "NFL",
"team_id": 5,
"week_num": 6,
"meta": {
.... more data ....,
"season_year": 2013
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是将season_yearkey/val 复制到"顶级"文档,同时将其嵌入到meta散列中.所以它会重复,最终结果如下:
"sport": "NFL",
"team_id": 5,
"week_num": 6,
"season_year": 2013,
"meta": {
.... more data ....,
"season_year": 2013
}
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法来更新我的集合中的所有文档与上述逻辑?我在用MongoDB shell version: 2.4.3