Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb mongo db从另一个集合添加子文档_Mongodb_Subdocument_Findandmodify - Fatal编程技术网

Mongodb mongo db从另一个集合添加子文档

Mongodb mongo db从另一个集合添加子文档,mongodb,subdocument,findandmodify,Mongodb,Subdocument,Findandmodify,我有两个团队赢得的收藏奖和一份团队名单。我想通过一些小的转换将整个奖项作为子文档ETL到其他(团队)中,但我只从奖项中获得一个子文档到团队中 这是我使用的代码。团队在编号上有一个唯一的索引,看起来像是最终文档减去荣誉子文档。但是,在数组中只添加了一个子文档。我错过了什么 db.awardout.find().forEach(function(award_team){ if(award_team != null) { db.teams.findAndModify( { query: {num

我有两个团队赢得的收藏奖和一份团队名单。我想通过一些小的转换将整个奖项作为子文档ETL到其他(团队)中,但我只从奖项中获得一个子文档到团队中

这是我使用的代码。团队在编号上有一个唯一的索引,看起来像是最终文档减去荣誉子文档。但是,在数组中只添加了一个子文档。我错过了什么

db.awardout.find().forEach(function(award_team){
if(award_team != null)
{
db.teams.findAndModify(
{
   query: {number: award_team.team},
   update: { $set: {accolades: [ {sku: award_team.sku, acc_category: "Award", acc_name: award_team.name }] } },
   upsert: true,
   });
   }
   });
示例奖项(团队可以赢得多个奖项,这些奖项将在以后汇总):

以下是团队在获得一项荣誉后的表现:

{
  "_id" : ObjectId("552071f69ad9c19e80996432"),
  "program" : "VRC",
  "robot_name" : "Fred VII",
  "organisation" : "Green Egg Robotics",
  "region" : "Massachusetts",
  "country" : "United States",
  "number" : "44",
  "team_name" : "Green Egg Robotics",
  "city" : "Oakham",
  "grade" : "High School",
  "is_registered" : "0",
  "accolades" : [{
      "sku" : "RE-VRC-14-0110",
      "acc_category" : "Award",
      "acc_name" : "Think Award (VRC/VEXU)"
    }]
}

我本以为会有两项荣誉加入到阵型中。我是否需要将奖励对象id携带到团队子文档中?

如果您只需执行
$set
操作,它只需将当前存在的数组替换为您正在放置的数组即可。因此,您必须执行
$push

 { $push: {accolades: {sku: award_team.sku, acc_category: "Award", acc_name: award_team.name } } }
这将向数组中插入一个新文档


完整文档:

谢谢。一旦我恢复球队,它就像冠军一样有效。在正确的地方获得了正确的荣誉!
 { $push: {accolades: {sku: award_team.sku, acc_category: "Award", acc_name: award_team.name } } }