我有一个带有数组字段的文档集合:
expedition_ids:[4]
由于数组中只有on项,我希望将其转换为:
expedition_id:4
我已经在重命名了。我只需要查询来转换数组,获取数组的0键值,并将其更改为数字。我已经尝试过各种查询来改变我在网上找到的类型,但似乎无法得出答案。有什么帮助吗?
编辑:我想它是这样的,但需要x.expedition_ids的正确值
db.transcriptions.find({expedition_ids: {$exists:true}}).forEach( function(x) {
db.transcriptions.update({_id: x._id}, {$set: {expedition_ids: x.expedition_ids}});
})
答案 0 :(得分:0)
我确信有一种更简单的方法,但这最终为我工作。
db.transcriptions.find({expedition_ids: {$exists:true}}).forEach( function(x) {
var arr = x.expedition_ids;
var value = arr[0];
db.transcriptions.update({_id: x._id}, {$set: {expedition_ids: value}});
});
答案 1 :(得分:0)
这对我有用:
{
"_id": NumberLong(12345678),
"name": "testDocument",
"relations": [
{
"mainIds" : [
NumberLong(8095698)
],
"relationType" : "parent"
}
]
}
db.Test.find({$and:[{"relations": {$exists: true}}, {"relations.mainIds": {$exists: true}}, {"relations.mainIds":{$type: 4}}]}).forEach( function (x) { x.relations.forEach( function (s) {s.mainIds = NumberLong(s.mainIds[0]); db.Test.save(x); }) });