当前位置: 首页 > 知识库问答 >
问题:

Mongodb$inc返回双倍

柯星华
2023-03-14

正如文档https://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/中所述,我试图将_id设置为自动增量int,这几乎可以正常工作,但是当试图插入记录时,函数返回的值是double,而不是integer,因此我尝试了以下更改。

db.system.js.save({
_id : "getNextId",
value : function (name) {
    var ret = db.counters.findAndModify(
        {
            query: { _id: name },
            update: { $inc: { seq: 1 } },
            new: true
        }
    );
    return Math.ceil(ret.seq);  //not working
    //return parseInt(ret.seq); //not working
   }    
 });

共有1个答案

吴英武
2023-03-14

对于所有数值,JavaScript只有浮点number类型,因此必须在shell中使用numberintnumberlong对象来表示MongoDB中的真整数值。

因此,ParseInt所做的是解析整数格式的字符串,但将该值作为浮点数字返回。正如您所发现的,您需要将数值包装在一个整数对象中,以便MongoDB将该值作为整数存储在数据库中:

return NumberInt(ret.seq);  // For 32-bit integers

return NumberLong(ret.seq); // for 64-bit integers
 类似资料:
  • 问题内容: 这是一个例子: 这将返回0,而不是应有的0.33333…。 有人知道吗? 问题答案: 这是因为和会被视为您没有另外指定时的处理方式,因此先评估, 然后将转换为。要解决此问题,请尝试,或者明确声明您正在处理double值。

  • 我需要一个方法,它将接受String数字作为参数,如果它有一个余数,返回双,如果它是十进制,返回int。 我写了这样的代码: 但是,由于这个方法的签名是两倍,它在任何情况下都会返回两倍。 请给我一些提示。

  • inc

    Step-by-step development of a Scheme-to-x86 compiler, based onAbdulaziz Ghuloum's paper, An Incremental Approach to CompilerConstruction, and extended draft tutorial, Compilers: Backend toFrontend and

  • 本文向大家介绍mongodb 修改器($inc/$set/$unset/$push/$pop/upsert),包括了mongodb 修改器($inc/$set/$unset/$push/$pop/upsert)的使用技巧和注意事项,需要的朋友参考一下 对于文档的更新除替换外,针对某个或多个文档只需要部分更新可使用原子的更新修改器,能够高效的进行文档更新。更新修改器是中特殊的键, 用来指定复杂的操作

  • 问题内容: 我有两个模型,用户模型和时间表,我想用$ lookup 和猫鼬把这两个模型结合起来。 用户(型号) 时间表(型号) 现在我的查询使用猫鼬: 用户汇总 我的查询结果是一个空的array(),如下所示: 查询结果: 我不知道为什么,但是查询结果是一个 空数组 ,我试图使用$ unwind和$ match,但也无法正常工作。 编辑: 用户集合 时间表的收集 问题答案: 猫鼬在创建时将集合名称

  • 我是MongoDB的新手,在这里有点疯狂。我正在使用最新的mongo java驱动程序版本和dropwizard。 我使用POJO向DDBB写入数据,这很有效。但是,在尝试获取元素时,我没有获得实际的\u id。以下是我尝试的内容: DDBB文档 人物类 返回值: 如您所见,它不会返回实际的id(例如603c249cbb33487d9baa49f8)。我尝试将id设置为字符串,但我得到的错误是解码