我搜索了SO并抓取了Mongoose/Mongo文档,但无济于事,因此我的问题.
我想$inc在嵌套数组中的对象中的值,或者$setOnInsert如果它还没有,则创建该对象.
我看到的Mongo文件如下:
{
"_id": "123",
"members": [
{
"first": "johnny",
"last": "knoxville",
"score": 2
},
{
"first": "johnny",
"last": "cash",
"score": 3
},
// ...and so on
],
}
Run Code Online (Sandbox Code Playgroud)
根据这个例子,我的用例是:
count如果数组对象中存在变量(基于first和找到last),则递增该变量score尚不存在,则将对象添加为1从这篇文章中我了解到我不能同时$set拥有一个我想要的变量$inc.好的 - 这很有道理.
这篇文章有助于理解位置$运算符,以便找到嵌套对象并增加它.
如果我知道该文档存在,我可以简单地进行如下更新:
myDoc = { first: 'johnny', last: 'cash' };
myCollection.findOneAndUpdate(
{
_id: '123',
'members.first': 'johnny',
'members.last': 'cash'
},
{
$inc: { "members.$.score": 1 …Run Code Online (Sandbox Code Playgroud)