在我的节点中创建新ObjectId时。js脚本使用:
mongojs.ObjectId()
我有一个_id像
“f5818257dd0b55ce321f87b5”
当我使用:
mongojs.ObjectId(“f5818257dd0b55ce321f87b5”).getTimestamp()
我得到:
“Sun Jul 10 2016 19:12:21 GMT+0200 (CEST)"
但是当我使用ObjectId(“f5818257dd0b55ce321f87b5”)时。getTimestamp()在MongoDB Shell中我得到:
ISODate("2100-07-10T12:23:51Z")
当我想按\u id
对文档进行排序时:
db.stores.find().sort({_id: -1})
由于ObjectId
中的时间戳错误,文档以错误的顺序返回。
如何让mongojs以正确的格式生成objectid
?
我真的很困惑,有人能帮我吗?
编辑:当我用mongojs插入一个文档时,我得到一个ObjectId,比如:
“30a282576f9f2c4772e69cd9”
当我得到时间戳:
ObjectId("30a282576f9f2c4772e69cd9").getTimestamp()
它返回:
ISODate("1995-11-09T22:36:07Z")
但是当我使用MongoDB Shell插入文档时,我得到了一个ObjectId,比如:
“5782a4809f3c4cbed9f2a8a1”
当我使用以下命令从该id获取时间戳时:
ObjectId("5782a4809f3c4cbed9f2a8a1").getTimestamp()
我得到:
ISODate("2016-07-10T19:39:44Z")
这两个文档的创建间隔大约为5分钟。为什么ObjectId中插入mongojs的日期是错误的?
问题解决了我使用版本2.2.0的MongoDB节点驱动程序更新到一个新的版本后,一切都像预期的那样工作。
这并不是一个真正的答案,因为我不知道谁有错,也不知道如何正确地修复它,但原因是字节顺序不同。
以您的30a282576f9f2c4772e69cd9
为例,在其上切换endianness(见下文)将产生5782a230472c9f6fd99ce672
,这在MongoDB shell中得到了正确的解释。
以下是代码:
let buf1 = Buffer.from('30a282576f9f2c4772e69cd9', 'hex');
let buf2 = Buffer.alloc(buf1.length);
[ 0, 4, 8 ].forEach(o => buf2.writeUInt32LE( buf1.readUInt32BE(o, 4), o ));
console.log(buf1.toString('hex'));
console.log(buf2.toString('hex'));
我认为这与mongojs无关,因为这只是使用官方的MongoDB节点驱动程序。
本文向大家介绍python根据时间生成mongodb的ObjectId的方法,包括了python根据时间生成mongodb的ObjectId的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python根据时间生成mongodb的ObjectId的方法。分享给大家供大家参考。具体分析如下: mongodb的_id为ObjectId类型,ObjectId内是包含时间戳信息的,这样我们在保
我有以下代码片段 我尝试运行应用程序时出现以下错误(部分) 似乎type="num "没有被处理。我怀疑年龄int也可能是一个问题,因为它是一个int,但需要一个string。从sting到int的反向转换也可能是一个问题。 任何帮助是值得赞赏的。 谢谢
另一个问题询问如何从现有的字符串表示形式创建。在本例中,您已经有了ID的字符串表示形式--它可能是也可能不是普遍唯一的--并且您正在将其解析为。
大约34小时前,我生成了一个签名的apk,但现在,我无法生成一个签名的apk,我不知道如何解决这个问题。请帮忙 这是我的输出消息 > 错误:任务“:app:LintVitalRelease”执行失败。 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获得完整的见解。 这是我的Build.Gradle(应用程
无法生成pdf下载获取Android.os.fileuriexposedexception错误:file:///storage/emulated/0/download/inv-0002.pdf通过intent.getdata()超出应用程序公开
问题内容: 目前正被此错误推高。 我正在使用mongodb的mongojs包装器运行node.js应用程序。我在默认端口上启动mongod,然后运行 但是err和user都为“ null”。据我所知,err应该填充某种数据,即使找不到任何东西。 如何使回调函数正常工作?请原谅新手问题。 问题答案: 当查询找不到至少一个匹配的文档时,则将回调的第二个参数(在这种情况下)设置为。这不是错误,也是。因此