【问题标题】:Insert document with date into collection in Robomongo将带有日期的文档插入到 Robomongo 的集合中
【发布时间】:2014-09-14 11:25:58
【问题描述】:

我正在使用 Robomongo,我在其中手动插入一个对象。

我想在我的对象上有一个字段,即当前日期。通常我习惯在 Javascript 中使用Date.now()。但是,当我在 Robomongo 工具中使用插入文档表单时,我得到:

Unable to parse JSON:
Expecting '(', at (4, 15).

示例 JSON:

{
    serial: '1231323123',
    game: 'World of Warcraft',
    date: Date.now()
}

知道如何插入这条记录吗?

【问题讨论】:

    标签: mongodb robo3t


    【解决方案1】:

    如果您将示例直接插入到 Robomongo 0.8.4 shell 提示符中,例如game 集合,则可以正常工作:

    db.game.insert({
        serial: '1231323123',
        game: 'World of Warcraft',
        date: Date.now()
    })
    

    如果您使用上下文菜单 (Insert Document...),JSON 解析器将返回您遇到的语法错误。

    这里的问题是 JSON 验证当前是使用一个不特定于 MongoDB 的库完成的。由于多种原因(未加引号的键和未加引号的函数值),上述 JSON 无效,但 可以在mongo shell 中插入。

    我为此创建了 Robomongo issue #619。一个相关的 JSON 验证差异是 issue #448

    在修复 JSON 验证错误之前,我建议改为通过 Robomongo 中的 shell 提示插入这样的文档。

    【讨论】:

      【解决方案2】:

      不幸的是,现阶段不可能按照以下 github 问题中的说明执行此操作:

      https://github.com/paralect/robomongo/issues/477

      ...Robomongo 的 JavaScript 引擎和 mongo shell 2.4+ 中默认的 v8 引擎有几个不同之处。


      Issue #520 应该通过将 Robomongo 附带的内置 shell 从 SpiderMonkey 更新到 v8(MongoDB 2.4+ 中的默认值)来解决此问题。

      【讨论】:

      • 实际上,Date.now() 工作正常。您引用的日期问题与使用 ISO 字符串构造新 Date() 有关,您可以使用 ISODate(...) 来表示。
      猜你喜欢
      • 2014-08-20
      • 2016-09-22
      • 2015-08-23
      • 2018-08-08
      • 2017-05-08
      • 2023-04-04
      • 2015-09-02
      相关资源
      最近更新 更多