MongoDb将字段类型从数组转换为NumberLong

时间:2016-05-24 21:32:36

标签: arrays mongodb integer

我有一个带有数组字段的文档集合:

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}});
})

2 个答案:

答案 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); }) });