使用mongodb,node js和express

时间:2016-04-26 08:49:07

标签: javascript node.js mongodb

我试图在数组中找到对象的索引并返回该索引,以便我可以使用返回的索引更新我的集合。在mongoDb中考虑这个结构:

{

    "_id" : ObjectId("571e32d44990e27409df4bb5”),

    "association" : ”f",

    "events" : [

            {

                    "event" : ”eventtest”,

                    "students" : [

                            {

                                    "session" : "beP--kELak7gcFQLN6-o_AdTkJA8eYcp",

                                    "name" : ”Student",

                                    "email" : ”email@example.com”,

                                    "checkedIn" : false

                            },

                            {

                                    "name" : "newstudent",

                                    "email" : "newemail",

                                    "checkedIn" : false

                            }

                    ]

            }

}

当我以表格形式输入学生电子邮件时,我想将其设置为" checkedIn"值为true。使用mongodb,express和node js这是我迄今为止所做的:

MongoClient.connect(url, function(err, db){
if (err){
console.log("Unable to connect to server");
} else {
  console.log('Connected to server');
  var collection = db.collection('associations');
  //indexes should be set dynamically where the emails match
  var eventIndex = 0;
  var studentIndex = 1;
  var setModifier = { $set: {} };
  setModifier.$set['events.' + eventIndex + '.students.' + studentIndex + '.checkedIn'] = true;
  collection.update({
    association: assoc,
    "events.event": event,
    "events.students.email": req.body.email
  }, setModifier, function(err, user){
    if(err) {
      console.log(err);
    } else{
      res.redirect("checkin");
    }
    db.close();
  });

}

});

这很好用,我需要查询学生,例如," newemail"并将studentIndex设置为1,并为该事件返回值0:" eventtest"。

我发现您可以使用mapReduce或聚合来查找数组中的项索引,但我不确定这是否适用于对象,我不知道从哪里开始。有人建议在客户端处理这个问题,因为mapReduce一开始并不值得推荐,但这似乎很麻烦。

以下是一些链接,可能会对我试图完成的事情有所了解。

Retrieve only the queried element in an object array in MongoDB collection

Retrieve index of item in array in MongoDB

Using MongoDB's positional operator $ in a deeply nested document query

function to return index of an object in a deeply nested array

编辑: 我发现这篇文章也是Mongodb sort inner array

如果我聚合学生的内部数组并对学生对象进行排序,以便匹配电子邮件的相应学生在列表顶部排序,同时仍然保留整个文档中的其余结构,那么它可能有用。相同。这样,应该签入的学生的索引始终为0?这是不好的做法吗?在我看来,这对于一项相当简单的任务来说是一件很麻烦的事。

0 个答案:

没有答案