我想添加元素数组中的数据不存在

时间:2018-01-29 11:17:53

标签: mongodb mongodb-query aggregation-framework

我在数据库中有这些数据。

{
   "_id" : ObjectId("5a6ef287370ff5dc3d6fda7b"),
   "name" : "Jhones Crows",
   "hobbies" : [ 
      {
        "name" : "swim",
        "_id" : ObjectId("5a6ef287370ff5dc3d6fda7b")
      }, 
      {
        "name" : "run",
        "_id" : ObjectId("5a6ef287370ff5dc3d6fda7c")
      }
   ]
}

如果业余爱好中的数据不存在,我会尝试将数据添加到爱好中。我试试这个:

db.getCollection('milo').update(
{'_id' : ObjectId("5a6ef287370ff5dc3d6fda7b"), 'hobbies.name' : 'sport'},
{ $addToSet : { 'hobbies' : {
    'name' : 'sport',
}}
},
{upsert : true}
)

我希望数据结果如下:

{
   "_id" : ObjectId("5a6ef287370ff5dc3d6fda7b"),
   "name" : "Jhones Crows",
   "hobbies" : [ 
      {
        "name" : "swim",
        "_id" : ObjectId("5a6ef287370ff5dc3d6fda7b")
      }, 
      {
        "name" : "run",
        "_id" : ObjectId("5a6ef287370ff5dc3d6fda7c")
      },
      {
        "name" : "sport",
        "_id" : ObjectId("5a6ef287370ff5dc3d6fda7a")
      }
   ]
}

所以假设运动的价值不在hoobies.name中。将在业余爱好中添加一个新的名称对象。但如果没有改变什么

0 个答案:

没有答案