在 MongoDB 中如何原子地增加一个 ISODate 类型的值
高洛峰
高洛峰 2017-04-24 09:09:55
0
1
659

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

{$inc: {"time": 1}}

错误:

Cannot apply $inc modifier to non-number
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(1)
刘奇

Je ne sais pas si vous avez mal compris les besoins du prince. Espérez-vous ajouter un nouveau champ avec une valeur de type ISODate ?
Si c'est le cas, $inc n'est pas fait pour ça. $inc ne peut être utilisé que pour augmenter ou diminuer des valeurs numériques, par exemple :
Données originales :

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

Le fonctionnement est le suivant :

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

Le résultat est :

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

Si vous souhaitez ajouter un nouveau champ, vous pouvez utiliser $push, comme expliqué dans l'exemple ci-dessus :

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

Le résultat est :

{ "_id" : ObjectId("537eaa530989f15b7f41cedf"), "i" : 3, "time" : [  ISODate("2014-05-23T00:00:00Z") ] }
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal