命名Mongo数组中的对象?

时间:2013-10-02 01:22:44

标签: php mongodb

使用PHP和Mongo我想更新用户可用性但无法弄明白。如何构建我的集合以便能够引用可用性groups.steve.availability?

以下是我的“群组”集合的结构:

{
"_id": {
    "$oid": "524327d536b82c7c5c842f6d"
},
"group_id": "testing",
"password": "test",
"users": [
    {
        "username": "steve",
        "availability": "null"
    },
    {
        "username": "joeb",
        "availability": "null"
    }
]

}

1 个答案:

答案 0 :(得分:1)

如果您想按照建议的方式引用它:groups.steve.availability,则需要更详细地构建文档。 (我不确定groups来自哪里。)

此示例会通过将用户名移动到users.steve.availability字段(users)的子字段来为您提供users.steve

{
"_id": {
    "$oid": "524327d536b82c7c5c842f6d"
},
"group_id": "testing",
"password": "test",
"users": {
    "steve": {
        "availability": "null"
    },
    "joeb" : {
        "availability": "null"
    }
}
}

或者,您可以直接在文档上创建字段:

{
"_id": {
    "$oid": "524327d536b82c7c5c842f6d"
},
"group_id": "testing",
"password": "test",
"steve": {
        "availability": "null"
},
"joeb" : {
        "availability": "null"
}
}

这样您就可以使用steve.availability.

如果您正在尝试进行查询,那么最好不要像原来那样离开它:

"users": [
{
    "username": "steve",
    "availability": "null"
}]

因此,您可以编写类似的查询:

db.groups.find({"users.username" : "steve" })