如何用Epoch-Time替换JavaScript中的ObjectId

如何用Epoch-Time替换JavaScript中的ObjectId,javascript,json,mongodb,timestamp,objectid,Javascript,Json,Mongodb,Timestamp,Objectid,我如何迭代JSON字符串并替换每个into以进行进一步处理 据我所知: 您可以通过以下方式从objectId获取前8个字符: subStrObjectId = objectId.substring(0, 8); 5668d142a54cc4960b55ea19-->5668D142 并将其从十六进制转换为Int值(以毫秒为单位的历元时间): 5668D142(十六进制)-->1449709890(十二进制) 我的Json字符串: myJsonString = [ [ {

我如何迭代JSON字符串并替换每个into以进行进一步处理

据我所知: 您可以通过以下方式从objectId获取前8个字符:

subStrObjectId = objectId.substring(0, 8);
5668d142a54cc4960b55ea19-->5668D142

并将其从十六进制转换为Int值(以毫秒为单位的历元时间):

5668D142(十六进制)-->1449709890(十二进制)

我的Json字符串:

myJsonString = [
    [
        {"_id":"5668d142a54cc4960b55ea19","cid":10851045,"temp":25.4},
        {"_id":"5668d14ea54cc4960b55ea1a","cid":10850909,"temp":24.9}
    ],
    [
        {"_id":"5668d14fa54cc4960b55ea1b","cid":10851045,"hum":37.9},
        {"_id":"5668d3108c8cda92074b7ec9","cid":10850909,"hum":39.6}
    ],
    [
        {"_id":"5668d3198c8cda92074b7ecb","cid":10851045,"lux":34},
        {"_id":"5668d31e8c8cda92074b7ecc","cid":10850909,"lux":68}
    ]
];

如果您将您知道的作为函数编写:

function convert(id) {
  return parseInt(id.substring(0, 8), 16);
}
您可以轻松地迭代对象并在对象上运行函数

我更喜欢函数式javascript:

var data = myJsonString.map(function (array) {
  return array.map(function (item) {
    item.time = convert(item._id);
    return item;
  })
})

console.log(data);
但您也可以使用循环进行迭代:

for (var i=0;i<myJsonString.length;i++) {
  for (var j=0;j<myJsonString[i].length;j++) {
    myJsonString[i][j].time = convert(myJsonString[i][j]._id);
  }
}
console.log(myJsonString);
for(var i=0;i可以使用返回的时间戳部分作为日期

myJsonString.map(
    function(element) {
        return element.map(function(doc) {
            doc.timestamp = ObjectId(doc._id).getTimestamp(); 
            doc._id = ObjectId(doc._id); // Only if you want to convert your _id string to valid Objectid
            return doc;
        })
    }
);
这将产生:

[       
    [
            {
                    "_id" : ObjectId("5668d14fa54cc4960b55ea1b"),
                    "cid" : 10851045,
                    "hum" : 37.9,
                    "timestamp" : ISODate("2015-12-10T01:11:43Z")
            },
            {
                    "_id" : ObjectId("5668d3108c8cda92074b7ec9"),
                    "cid" : 10850909,
                    "hum" : 39.6,
                    "timestamp" : ISODate("2015-12-10T01:19:12Z")
            }
    ],
    [
            {
                    "_id" : ObjectId("5668d3198c8cda92074b7ecb"),
                    "cid" : 10851045,
                    "lux" : 34,
                    "timestamp" : ISODate("2015-12-10T01:19:21Z")
            },
            {
                    "_id" : ObjectId("5668d31e8c8cda92074b7ecc"),
                    "cid" : 10850909,
                    "lux" : 68,
                    "timestamp" : ISODate("2015-12-10T01:19:26Z")
            }
    ]
]

你的问题是什么?你所做的似乎还可以。我如何迭代这个json示例字符串“myJsonString”用正确的时间段来替换所有的对象?我怎么写这样的函数?我发布了一个答案,如果它回答了你的问题,考虑把它标记为未来访问者的答案。你好阿米尔和USER 3100115,你们两个:谢谢你们。你们的解决方案确实解决了我的问题!“阿米尔,我来自不同的时区,我必须去睡觉。耐心。
[       
    [
            {
                    "_id" : ObjectId("5668d14fa54cc4960b55ea1b"),
                    "cid" : 10851045,
                    "hum" : 37.9,
                    "timestamp" : ISODate("2015-12-10T01:11:43Z")
            },
            {
                    "_id" : ObjectId("5668d3108c8cda92074b7ec9"),
                    "cid" : 10850909,
                    "hum" : 39.6,
                    "timestamp" : ISODate("2015-12-10T01:19:12Z")
            }
    ],
    [
            {
                    "_id" : ObjectId("5668d3198c8cda92074b7ecb"),
                    "cid" : 10851045,
                    "lux" : 34,
                    "timestamp" : ISODate("2015-12-10T01:19:21Z")
            },
            {
                    "_id" : ObjectId("5668d31e8c8cda92074b7ecc"),
                    "cid" : 10850909,
                    "lux" : 68,
                    "timestamp" : ISODate("2015-12-10T01:19:26Z")
            }
    ]
]