首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ISODate中将BSON ISODate转换为NumberLong

在ISODate中将BSON ISODate转换为NumberLong
EN

Stack Overflow用户
提问于 2014-06-25 16:23:04
回答 2查看 5.8K关注 0票数 1

我在MongoDB中有一个集合,它具有created字段,其值当前存储为BSON ISODate对象。我想将所有这些转换为包含时间戳的NumberLong对象。

首先,我尝试了这个(在中):

代码语言:javascript
复制
db.collection.find( { "created" : { "$type" : 9 } } ).forEach( function (x) {   
  x.created = new NumberLong(x.created);
  db.collection.save(x);
});

JavaScript execution failed: Error: could not convert "Tue Mar 18 2014 18:11:21 GMT-0400 (EDT)" to NumberLong

显然,日期字符串不能作为long...fair进行足够的转换。然后我尝试了一下,认为我可以使用Javascript Date对象的UTC方法:

代码语言:javascript
复制
db.collection.find( { "created" : { "$type" : 9 } } ).forEach( function (x) {
  x.created = new Date(x.created).UTC();
  db.collection.save(x);
});

JavaScript execution failed: TypeError: Object Tue Mar 18 2014 18:11:21 GMT-0400 (EDT) has no method 'UTC'

我试过其他几种变体,但都没有用。任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-25 16:29:18

要访问Date的基础数值,可以在其上调用getTime()

代码语言:javascript
复制
x.created = new NumberLong(x.created.getTime());
票数 3
EN

Stack Overflow用户

发布于 2014-06-25 16:33:04

ISODate对象有一个"valueOf“方法,它将返回一个划时代的时间。下面是一个通过mongo生成此代码的示例:

代码语言:javascript
复制
replset:PRIMARY> var date = ISODate()
replset:PRIMARY> date
ISODate("2014-06-25T16:31:46.994Z")
replset:PRIMARY> date.valueOf()
1403713906994
replset:PRIMARY> 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24413932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档