如何在meteor.users中找到一个元素,然后插入/更新/ upsert我的数据为空数组,如果找到它则更新?在mongodb和流星

时间:2016-02-22 09:39:06

标签: mongodb meteor

如何在meteor.users中找到course_id,然后将我的数据插入/更新/ upsert到“classes”(空数组)?

如果找不到course_id然后插入一个新数组,如果我可以用新的classes_id更新数组。

空类数组:

{
  "_id": "RoFFcaAfXBeR2napZ",
  "emails": [
    {
      "address": "tong@gmail.com",
      "verified": false
    }
  ],
  "classes": [],
  "courses": [
    "qwmZdgQbrZ3rmHdN8"
  ]
}

如果我找不到course_id,则将新数组插入类:

{
  "_id": "RoFFcaAfXBeR2napZ",
  "emails": [
    {
      "address": "tong@gmail.com",
      "verified": false
    }
  ],
  "classes": [
      {
         "course_id": "svesvinfdsgrvnekuktndvsk",
         "classes_id": ["myclass1"]
      },
  ],
  "courses": [
    "qwmZdgQbrZ3rmHdN8"
  ]
}

如果我能找到course_id

,请将myclass2添加到classes_id
{
  "_id": "RoFFcaAfXBeR2napZ",
  "emails": [
    {
      "address": "tong@gmail.com",
      "verified": false
    }
  ],
  "classes": [
      {
         "course_id": "svesvinfdsgrvnekuktndvsk",
         "classes_id": ["myclass1", "myclass2"]
      },
  ],
  "courses": [
    "qwmZdgQbrZ3rmHdN8"
  ]
}

1 个答案:

答案 0 :(得分:0)

要查找具有相关课程ID的记录:Meteor.users.find({"courses": yourVariableHoldingTheId})是一个示例查询。这假设您的出版物上有课程字段(有关发布用户stackoverflowMeteor的更多信息。

从该查询中,您现在将拥有符合条件的Cursor个用户。迭代用户并将它们视为普通的JS对象 - 检查您的标准并推送到子子文档,或推送到类。$ .classesId。

推进课程Meteor.users.update({_id: "RoFFcaAfXBeR2napZ"}, {$push: {'classes': {'course_id': 'yourGibberishHere', 'classes_id': ['test']}}});

推送到Mongo 3.2上测试的classes_id Meteor.users.update({"classes.course_id": "svesvinfdsgrvnekuktndvsk"}, {$push: {"classes.$.classes_id": "myclass3"}}); ,你的里程可能会有所不同(2.6或3.2,如果你使用的是外部mongo)。较旧的评论指向x。$。y不能在meteor / mongo $ push中工作,不确定是否仍然如此。

如果其中任何一个失败,您可以操作从查找返回的对象并使用更易于访问的调用更新它或其子文档