【问题标题】:Search nested arrays in MongoDB documents在 MongoDB 文档中搜索嵌套数组
【发布时间】:2012-01-18 09:07:11
【问题描述】:

我正在使用 Codeigniter 和 MongoDB 开发一个 Web 应用程序。用户可以将他们喜欢的声音保存为“书签”。每个用户获得一个文档,然后将每个声音附加到该文档中称为声音的数组中。每个声音都有一组标签,这些标签也保存到书签中。如何在用户的书签文档中搜索用户书签?我希望他们能够按标签搜索(来自标签数组)。

这是我的 MongoDB 文档:

{
    "_id": ObjectId("4f15846a112bf6b725000000"),
    "owner": {
        "user_id": ObjectId("4f147e1709ab662061000000"),
        "session_id": "3424e3155a01e78c50a8498f78cc51d9"
    },
    "sound_files": [
        {
            "sound_id": ObjectId("4f1480ff09ab661a61000001"),
            "sound_url": "http://s3.amazonaws.com/4c/864ea8e92e6ec4408e248cc9brf008bd/18.wav",
            "sound_tags": [
                "sound",
                "new york",
                "cool"
            ]
        },
                {
            "sound_id": ObjectId("4f1480ff09ab661a61000001"),
            "sound_url": "http://s3.amazonaws.com/4c/864ea8e92e6ec4408e248cc9brf008bd/12.wav",
            "sound_tags": [
                "sound",
                "happy",
                "ocean"
            ]
        }
    ],
    "total": 1
}

【问题讨论】:

    标签: codeigniter mongodb


    【解决方案1】:
    db.col.find({'sound_files.sound_tags':"sound"})
    

    编辑:显然不完全是 OP 正在寻找的东西。等待更准确的需求描述。

    【讨论】:

    • 那行不通。即使标签只匹配一个项目(标签数组),它也只返回数组中的所有项目。
    • 是的,您总是查询文档,而不是文档的一部分。您不能只返回数组的特定元素。你没有在你的问题中提到你想要。如果要查询特定文档,则必须将它们放在顶级集合中。
    • 好的,但是我无法获取与特定查询匹配的数组中的所有项目?
    • 我需要搜索一个文档,但不是在顶层,而是通过sounds_files数组中的标签(使用sound_tags子数组)。
    • 您好,这目前是不可能的 - 请投票:jira.mongodb.org/browse/SERVER-828 / jira.mongodb.org/browse/SERVER-142
    猜你喜欢
    • 2011-05-24
    • 1970-01-01
    • 2016-01-13
    • 2018-05-06
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多