Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays MongoDB-从对象数组中提取_Arrays_Mongodb - Fatal编程技术网

Arrays MongoDB-从对象数组中提取

Arrays MongoDB-从对象数组中提取,arrays,mongodb,Arrays,Mongodb,我有一个收藏 { “_id”:ObjectId(“534bae30bf5049a522e502fe”), “数据”:[ { "0" : { “内容”:“1”, “类型”:“文本”, “ident”:正确 }, "1" : { “内容”:“, “类型”:“文本”, “ident”:false } }, { "0" : { “内容”:“2”, “类型”:“文本”, “ident”:正确 }, "1" : { “内容”:“, “类型”:“文本” } } ] } 内容是唯一的 如何删除与内容:“2”匹

我有一个收藏

{
“_id”:ObjectId(“534bae30bf5049a522e502fe”),
“数据”:[
{
"0" : {
“内容”:“1”,
“类型”:“文本”,
“ident”:正确
},
"1" : {
“内容”:“,
“类型”:“文本”,
“ident”:false
}
},
{
"0" : {
“内容”:“2”,
“类型”:“文本”,
“ident”:正确
},
"1" : {
“内容”:“,
“类型”:“文本”
}
}
]
}

内容
是唯一的

如何删除与
内容:“2”
匹配的对象

我试过这个:

data:{$pull:{“content”:删除[i]}
其中
删除[i]
是内容


还有一些变化,但我不能让它工作。我遗漏了什么?

根据你的评论,你应该担心。我已经在PHP应用程序中见过几次了(PHP在转储数组中有这种有趣的表示法)

问题是“0”和“1”等元素本身创建子文档,而不是将该结构下的所有内容都作为子文档本身作为数组成员,那么在访问数组的各个成员时会遇到问题,因为所使用的路径需要是“绝对”的

因此,这实际上“强制”没有其他可能的选项通过等效的“点符号”形式访问元素。除了在本例中,它不仅是数组的“n”元素,而且是您需要寻址的实际路径

但如果这真的对你有用,而且看起来“有人”在试图逃避 “嵌套”阵列下的位置更新问题(有关详细信息,请参阅操作员文档),然后可以按如下方式执行更新:

基本声明如下:

db.collection.update(
{
“data.0.context”:2
},
{
“$pull”:{”data.$.0.context:“2}”
}
)
这确实“似乎”是一种有点滑稽的方式来写这篇文章,但是在调查你的实际结构之后,你应该能够看到为什么需要这样做的原因。基本上,这满足了使用位置
$
运算符指示数组中第一个匹配元素(也称为“数据”)的索引,然后使用标准子文档表示法来指定要更新的元素的路径的要求

因此,如果元素实际处于未知位置,这当然会带来问题。但是要考虑的是,对于给定的限制,数组的实际使用对您来说是重要的?如果需要匹配“内部”元素的位置,则更改结构以将数组放入其中


但要始终了解限制的影响,并尝试根据引擎实际能做的事情进行建模。

您是否可能从PHP中转储此内容?或者你的内容在mongo外壳中看起来是这样的吗?它在外壳中看起来是这样的。我应该为此担心吗?