我是MongoDb的新手,我制作了一个简单的PHP过滤应用程序(类似于TAGS)
我有一个名为“过滤器”的集合
在其中,每条记录都是这样的:
"_id" : ObjectId("5274da3e040b61fa15000001"),
"activation" : 1,
"and_or" : "",
"description" : "",
"id" : 13,
"order_id" : 2,
"slug" : [
"apple",
"orange",
"banana"
],
"title" : "Sample"
我从PHP表单中获取这些值并将其作为记录插入。
问题是 当我尝试从 slug 中删除“orange”时,数组会断开并变为对象
"slug" : {
"0" : "apple",
"2" : "banana"
},
我不能再像这样查询它,因为它返回 NULL
db.filters.find({slug:“apple”})
null
我假设当数组的索引在数值上是正确的(1,2,3,4)时,Mongo会将其识别为数组,否则它会将其存储为对象,因为使用了自定义索引。
不幸的是,我无法更改数组的索引,因为它们在其他文档中链接。
有什么想法吗? 谢谢!
答案 0 :(得分:1)
您将获得null,因为您可能正在使用php中的remove方法删除该文档。 相反,您需要将slug更新为仅使用apple作为其元素的数组
db.collection.update($阵列);