我正在运行以下代码,试图在现有子文档下创建一个子文档。基本结构是:
用户 - > (很多评论) - > (很多评级)。
评级对象是一个基本的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
但是,子文档根本没有出现。
有人能指出我正确的方向吗?
答案 0 :(得分:0)
找到答案; array [index]格式不适用于Mongo。而是使用对象表示法。所以,而不是;
$push: {"comments[0].ratings": "test"}
使用;
$push: {"comments.0.ratings": "test"}