我需要一个Update命令,可以检查是否定义了一个字段,如果是,则为$ inc,否则为$ set。我该怎么做?
例如,我有一个用户,我想更新其他人呼叫的次数。所以起初,用户是:
User = { userName: "name", callers: {}}
通话后,我将新的来电显示添加到来电者:
User = { userName: "name", callers: { "otherUser": 1 }}
问题是我想更新“otherUser”的调用次数,如果他再次打电话给我,我会:
User = { userName: "name", callers: { "otherUser": 2 }}
答案 0 :(得分:1)
无论您需要什么都是由 $ inc 自动完成的,无需明确检查字段是否已定义。
试
db.users.update({userName:"name"},{$inc:{"callers.otherUser":1}},true)
或
db.users.update({userName:"name"},{$inc:{"callers.otherUser":1}})
假设:用户是集合
$ inc是运算符,它按指定值递增字段。 如果字段不存在,则会将该字段添加到文档中。 语法是
$inc:{field:value}
在您的情况下,您想要更新子文档callers:{}
中的字段。要访问它,您必须使用我使用sub-document-name.field
callers.otherUser
如果想深入了解,请参考: