考虑以下文件:
{
"comments": [
{
"id" : 1,
"userid": "john",
"comment": "lorem ipsum...",
"responses": [
{
"id" : 2,
"userid": "smith",
"comment": "lorem ipsum...",
"responses": [
{
"id" : 3,
"userid": "random",
"comment": "lorem ipsum...",
"responses": [] // I want to push a comment into this array
},
{
"id" : 4,
"userid": "guy",
"comment": "lorem ipsum..."
}
]
},
{
"id" : 5,
"userid": "adam",
"comment": "lorem ipsum..."
}
]
}
]
}
有没有办法将文档推送到responses
数组?所以在这种情况下,用户想要评论3级注释,我想将该注释推送到数组中。我可以在评论时将数组位置发送给用户并返回服务器,但我很确定这是不可靠的。此外,如果在那之间发生删除(我猜(?)),阵列中的位置会发生变化,所以它实际上是不行的。
答案 0 :(得分:1)
如果您知道要达到该级别的索引序列,那么是:
> db.test.update({ ... }, { "$push" : { "comments.0.responses.0.responses.0.responses" : "this is my response" } })
0是索引。但是,像这样的多重嵌套结构几乎肯定是一个糟糕的数据建模选择。你应该考虑其他选择。也许modeling tree structures上的文档会有所帮助吗?