Mongoose Node Express需要_id数字,至少有18个位置

时间:2018-06-14 07:29:22

标签: node.js mongodb mongoose long-integer id

我在后端使用带有Node,Express和MongoDB(mongoose ODM)的MEAN Stack。 现在,我有一个集合的模式模型,其具有被覆盖的_id值,并且应该由具有至少18个位置的长数据或其他大数据类型表示。我想用mongoose-long。 原因是,我有一些"复合键"来自2个集合,我代表来自一个集合的12个位置,然后从另一个集合中增加其他6个数字位置,我增加1.这样,我可以通过数字前缀将哪些集合属于一起。 / p>

然而,当我生成一些数据(浮动)并为_id输入一个长数字时,如#34; 123456789123456778"并将其传递给mongodb,它会被保存,但是当我查询id字段时,似乎有一个四舍五入到该数字的最后三个位置(数百个)。 此外,如果我将数字增加1,由于重复键,它无法保存条目。这是一个mongoose / MongoDB问题,还是一个javascript或python客户端问题?我在这里读到:Mongodb can't find object with too long _id,您无法查询过长的ID号,也许输入太长的数字也是一样的......

name: 'MongoError',
  message: 'E11000 duplicate key error collection: dnz.fps index: _id_ dup key: { : 1.234567891234568e+17 }',
  driver: true,
  code: 11000,
  index: 0,
  errmsg: 'E11000 duplicate key error collection: dnz.fps index: _id_ dup key: { : 1.234567891234568e+17 }',
  getOperation: [Function],
  toJSON: [Function],
  toString: [Function] }

是否有一些解决方法?或者在MongoDB中获得大数字? 我还想过改变我的数据模型,并为我的Collection使用类似的2 id,但这会再次改变我的查询逻辑,而且当我创建新的实例时,我不知道这是否会变得混乱我的模特。例如我必须从创建的实例传递id值并以某种方式将其插入到其他集合中......

有谁更好地了解如何解决这个大数字问题?

0 个答案:

没有答案