通过索引将集合推送到子文档?

时间:2016-08-08 14:46:51

标签: javascript mongodb mongoose

我正在运行以下代码,试图在现有子文档下创建一个子文档。基本结构是:

用户 - > (很多评论) - > (很多评级)。

评级对象是一个基本的javascript对象,具有结构;

rating: {
    userId: "userId",
    rating: 4
}

所以,对于index [0]的评论,我试图用以下内容推出一个新的评级;

db.getCollection('Users').update(
                {id: "user123", },
                {
                    $push: {
                        comments[0].ratings: rating
                    }
                })

从mongo控制台返回(评级设置为测试字符串“test”),是;

Error: Line 5: Unexpected token [

我试图通过在评论[0];

周围包装逗号来解决这个问题
db.getCollection('Insights').update(
                    {id: "b5e5bf69-071b-4af2-99b2-5165b47499cb", },
                    {
                        $push: {
                            "comments[0].ratings": "test"
                        }
                    })

这实际上是成功回归;

Updated 1 existing record(s) in 2ms

但是,子文档根本没有出现。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

找到答案; array [index]格式不适用于Mongo。而是使用对象表示法。所以,而不是;

$push: {"comments[0].ratings": "test"}

使用;

$push: {"comments.0.ratings": "test"}