MongoDB,数组存储和对象查询

时间:2013-11-21 10:19:07

标签: php arrays mongodb object

我是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会将其识别为数组,否则它会将其存储为对象,因为使用了自定义索引。

不幸的是,我无法更改数组的索引,因为它们在其他文档中链接。

有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

您将获得null,因为您可能正在使用php中的remove方法删除该文档。 相反,您需要将slug更新为仅使用apple作为其元素的数组

db.collection.update($阵列);