0

我在集合中有这个文件,称为authors

// document 1
{
 "_id": 1,
 "name": 'Peter'
 "experiments_papers":[
     {
       "id_experiment": 1,
       "ids_papers": [1, 2, 3]
     },
     {
       "id_experiment": 2,
       "ids_papers": [10, 11, 12]
     }
  ]
}

// document 2
{
 "_id": 2,
 "name": 'John'
 "experiments_papers":[
     {
       "id_experiment": 1,
       "ids_papers": [10, 20, 30]
     },
     {
       "id_experiment": 5,
       "ids_papers": [100, 110, 120]
     }
  ]
}

所以我想更新所有作者id_paperids_papers数组中添加一个id_experiment = 1

添加后的示例结果id_paper = 4

// document 1
{
 "_id": 1,
 "name": 'Peter'
 "experiments_papers":[
     {
       "id_experiment": 1,
       "ids_papers": [1, 2, 3, 4]
     },
     {
       "id_experiment": 2,
       "ids_papers": [10, 11, 12]
     }
  ]
}

// document 2
{
 "_id": 2,
 "name": 'John'
 "experiments_papers":[
     {
       "id_experiment": 1,
       "ids_papers": [10, 20, 30, 4]
     },
     {
       "id_experiment": 5,
       "ids_papers": [100, 110, 120]
     }
  ]
}

添加后id_paper,我想得到id_experiment = 1只有这个实验在experiments_papers数组中的作者。

此查询后的示例:

// document 1
{
 "_id": 1,
 "name": 'Peter'
 "experiments_papers":[
     {
       "id_experiment": 1,
       "ids_papers": [1, 2, 3, 4]
     }
  ]
}

// document 2
{
 "_id": 2,
 "name": 'John'
 "experiments_papers":[
     {
       "id_experiment": 1,
       "ids_papers": [10, 20, 30, 4]
     }
  ]
}

谢谢

4

1 回答 1

0

所以你会这样查询Update

首先查询那些已经id = 1推送到相应数组的人

db.collection.update({
  "experiments_papers.id_experiment": 1
},
{
  $push: {
    "experiments_papers.$.ids_papers": 4
  }
})

当然你不必 push 4,但你想要什么。

于 2021-03-05T18:26:45.960 回答