使用Mongoose访问MongoDB中数组的条目

时间:2014-05-22 15:53:30

标签: node.js mongodb mongoose

我有以下架构:

var userSchema = mongoose.Schema({

    local            : {
        email        : String,
        password     : String,
        movies       : [{
                          moviename   : String,
                          rating      : Number
                        }],
    }

});

我的问题是:

我可以将条目一个接一个地保存。即我可以按顺序保存电影,而不是同时保存所有电影(数组条目)吗?换句话说,电影阵列可以动态增长吗?

我想做的是:

user.movies = { moviename  : "Top Gun",
                rating     : 80};
user.save(function (err) {
                    if (err)
                        console.log("Error in saving");

                    res.end(0);
                });

我相信保存是有效的,因为我没有错误,但我迷失了如何检索数组中的条目。 有人可以给我一个例子或参考如何访问条目。此外,关于限制的任何其他参考,例如重复数组条目(相同的电影)。

谢谢。

1 个答案:

答案 0 :(得分:1)

是的,您可以逐个添加电影。

1)您可以在不检索项目的情况下添加电影:

userSchema.findOneAndUpdate({_id:...},
                            {$push:{"local.movies":
                                   {movieName:"movie Name", rating:5}}},
                             {'new':true}, function(err,doc){ ... })

2)使用mongoose你可以检索项目,添加电影并保存:

user.local.movies.push({ moviename  : "Top Gun", rating     : 80});
user.save(function (err) {
                if (err)
                    console.log("Error in saving");

                res.end(0);
            });

关于访问电影数组,如果您检索用户文档,则可以使用user.local.movi​​es来访问电影