我有一个名为myCollection的mongoDB集合,在myCollection内部有不同的文档,其结构如下:
{
"id": 1234,
"posts": [
[
{
"id": "0.0",
"name": "john",
"message": "hello"
},
{
"id": "0.1",
"name": "jane",
"message": "good morning"
},
{
"id": "0.2",
"name": "josh",
"message": "good evening"
}
],
[
{
"id": "1.0",
"name": "mark",
"message": "good lunch"
}
],
[
{
"id": "2.0",
"name": "john",
"message": "bye bye"
},
{
"id": "2.1",
"name": "mark",
"message": "hi"
}
]
]
}
谁能告诉我如何删除嵌套的“帖子”数组中的特定对象? 例如,围绕id = 1234的文档的此特定对象启动查询:
{
"id": "0.1",
"name": "jane",
"message": "good morning"
}
我希望id = 1234的对象的结构变成这样:
{
"id": 1234,
"posts": [
[
{
"id": "0.0",
"name": "john",
"message": "hello"
},
{
"id": "0.2",
"name": "josh",
"message": "good evening"
}
],
[
{
"id": "1.0",
"name": "mark",
"message": "good lunch"
}
],
[
{
"id": "2.0",
"name": "john",
"message": "bye bye"
},
{
"id": "2.1",
"name": "mark",
"message": "hi"
}
]
]
}
答案 0 :(得分:0)
您可以使用以下查询
db.getCollection("test1").update(
{
"id": 1234,
"posts": {
"$elemMatch": {
"$elemMatch": {
"id": "0.1",
"name": "jane",
"message": "good morning"
}
}
}
},
{
"$pull": {
"posts.$": {
"id": "0.1",
"name": "jane",
"message": "good morning"
}
}
}
)
答案 1 :(得分:0)
您需要拉出文档并执行更新。
db.myCollection.update(
{ id : 1234 },
{
$pull : {"posts.0" : {
"id": "0.1",
"name": "jane",
"message": "good morning"
}
}
})