MongoDB、数组存储和对象查询


MongoDB, array storage and Object querying

我是MongoDb的新手,我制作了一个简单的PHP过滤应用程序(类似于TAGS)

我有一个名为"过滤器"的集合

在里面,每条记录看起来都是这样的:

    "_id" : ObjectId("5274da3e040b61fa15000001"),
"activation" : 1,
"and_or" : "",
"description" : "",
"id" : 13,
"order_id" : 2,
"slug" : [
    "apple",
    "orange",
    "banana"
],
"title" : "Sample"

我从PHP表单中获取这些值,并像记录一样插入它们。

问题是当我试图从段塞中移除"橙色"时,数组会中断并变成对象

"slug" : {
    "0" : "apple",
    "2" : "banana"
},

我不能再这样查询它了,因为它返回NULL

db.filters.fund({slug:"apple"})

null

我假设当一个数组的索引在数字上是正确的(1,2,3,4)时,Mongo会将其识别为一个数组,否则它会将其存储为一个对象,因为使用了自定义索引。

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

有什么想法吗?谢谢

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

db.collection.update($array);