通过mongoose更新NumberLong会变成TimeStamp

时间:2015-11-28 20:33:32

标签: node.js mongodb mongoose

我有一个bar集合,每个文档都有两个字段对应于mongoose上的以下barSchema描述:

const barSchema = mongoose.Schema(
  {
    "_id": SchemaTypes.ObjectId,
    "index": SchemaTypes.Long,
  },
  { collection : 'bar' }
);

我在bar集合上有一个独特的文档,我使用以下命令插入该文档:

db.bar.insert( { _id: ObjectId('565a07b5c1c80e6ee05cc326'),  index: NumberLong(1)} )

我可以在mongo shell上成功更新该文件:

db.bar.update( { _id: ObjectId("565a07b5c1c80e6ee05cc326")} , {$set:{index: NumberLong(7)}})

然而,如果我通过mongoose进行相同的操作,那么文档将不会以相同的方式更新。我使用mongoose在node.js中创建了它,并使用以下barSchema的以下语句:

const BarModel = mongoose.model('bar', barSchema);
BarModel.update(
  { _id: '565a07b5c1c80e6ee05cc326'},
  {$set: {index: '7'}},
  (err, tank) => {
    if (err) console.log(err);
    else console.log(tank);
  }
)

更新后,生成的文档为:

{ "_id" : ObjectId("565a07b5c1c80e6ee05cc326"), "index" : Timestamp(0, 0) }

我已经尝试使用mongoose.Types.Long.fromString("7")中的长值进行更新,但没有任何效果正常,结果始终如上所述。

0 个答案:

没有答案