【问题标题】:How do I find an element in meteor.users then insert/update/upsert my data an empty array, then update if I found it? In mongodb and meteor如何在meteor.users 中找到一个元素,然后将我的数据插入/更新/更新插入一个空数组,如果找到则更新?在 mongodb 和流星中
【发布时间】:2016-06-03 16:13:02
【问题描述】:

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

如果找不到 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"
  ]
}

【问题讨论】:

    标签: mongodb meteor


    【解决方案1】:

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

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

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

    推送到 classes_id Meteor.users.update({"classes.course_id": "svesvinfdsgrvnekuktndvsk"}, {$push: {"classes.$.classes_id": "myclass3"}}); 在 Mongo 3.2 上测试,您的里程可能会因流星而异(2.6 或 3.2,如果您使用外部 mongo)。较早的评论指出 x.$.y 在流星/mongo $push 中不起作用,不确定是否仍然如此。

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

    【讨论】:

    • 如何检查 course_id 是否存在?如果存在则推送,如果不存在则创建 course_id?
    • 我想我只是findone,如果第n个然后创建course_id。不知道这是否是最好的方法
    • 我怀疑我在最初的回答中可能使用了不正确的 course_id;如果是这样,请告诉我。要解决 course_id 的检查,(classes.$.course_id),您应该能够找到 Meteor.users.find({"classes.course_id": "svesvinfdsgrvnekuktndvsk"}); 或 Meteor.users.findOne({"classes.course_id": "svesvinfdsgrvnekuktndvsk"});
    猜你喜欢
    • 2019-01-23
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 2019-10-19
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多