在 MongoDB 中如何原子地增加一个 ISODate 类型的值

浏览:57日期:2023-07-13

问题描述

直接使用 $inc 似乎不可以:

{$inc: {'time': 1}}

错误:

Cannot apply $inc modifier to non-number

问题解答

回答1:

不知道有没有误解王子的需求,你是希望能新增一个 ISODate 类型值的字段吗?如果是的话,$inc 并不是用来做这个的。$inc 只能用来对数字类型的值进行增减操作,举例如下:原有数据:

{ '_id' : ObjectId('537eaa530989f15b7f41cedf'), 'i' : 1 }

操作如下:

db.test.update({ i : 1 },{ $inc : { i : 2 }})

结果为:

{ '_id' : ObjectId('537eaa530989f15b7f41cedf'), 'i' : 3 }

如果是希望新增一个字段,可以使用 $push,同样以上例说明:

db.test.update({ i : 3 },{ $push : {’time’ : new ISODate('2014-05-23')}})

结果为:

{ '_id' : ObjectId('537eaa530989f15b7f41cedf'), 'i' : 3, 'time' : [ ISODate('2014-05-23T00:00:00Z') ] }

相关文章: