Node.js 通过mongoose更新NumberLong会变成时间戳
我有一个Node.js 通过mongoose更新NumberLong会变成时间戳,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个bar集合,每个文档有两个字段,对应于mongoose上的以下barSchema描述: const barSchema = mongoose.Schema( { "_id": SchemaTypes.ObjectId, "index": SchemaTypes.Long, }, { collection : 'bar' } ); 我在barcollection上有一个唯一的文档,我使用以下命令插入该文档: db.bar.insert( { _id: Obje
bar
集合,每个文档有两个字段,对应于mongoose上的以下barSchema
描述:
const barSchema = mongoose.Schema(
{
"_id": SchemaTypes.ObjectId,
"index": SchemaTypes.Long,
},
{ collection : 'bar' }
);
我在bar
collection上有一个唯一的文档,我使用以下命令插入该文档:
db.bar.insert( { _id: ObjectId('565a07b5c1c80e6ee05cc326'), index: NumberLong(1)} )
我可以通过以下操作在mongo shell上成功更新该文档:
db.bar.update( { _id: ObjectId("565a07b5c1c80e6ee05cc326")} , {$set:{index: NumberLong(7)}})
然而,如果我通过mongoose执行相同的操作,那么文档将不会以相同的方式更新。我在node.js和mongoose中使用了前面的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”)
中的long值进行更新,但没有任何效果,结果总是这样。您是否将库用于long
类型?我将mongoose long用于NumberLong mongodb类型