我有一个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")
中的长值进行更新,但没有任何效果正常,结果始终如上所述。