mongodb查询结果

sha*_*gan 0 mongodb nosql mongodb-query

[
    {
        "userid": "abcde",
        "dates": {
            "2-01-2015": {
                "9-10": {
                    "ava": "yes",
                    "bookibg_id": "null"
                },
                "10-11": {
                    "ava": "yes",
                    "bookibg_id": "null"
                }
            },
            "3-01-2015": {
                "9-10": {
                    "ava": "no",
                    "bookibg_id": "null"
                },
                "10-11": {
                    "ava": "no",
                    "bookibg_id": "null"
                }
            }
        }
    },
    {
        "userid": "abcde",
        "dates": {
            "2-01-2015": {
                "9-10": {
                    "ava": "yes",
                    "bookibg_id": "null"
                },
                "10-11": {
                    "ava": "no",
                    "bookibg_id": "null"
                }
            },
            "3-01-2015": {
                "9-10": {
                    "ava": "no",
                    "bookibg_id": "null"
                },
                "10-11": {
                    "ava": "no",
                    "bookibg_id": "null"
                }
            }
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

我对nosql db和mongodb相对较新.它有点混淆如何查询这些.对于给定的db,我如何编写查询以生成结果:查询:列出用户ID,使得在"2-01-2015","ava"在"9-10"处为"是".Plzz也解释了结果.

Nar*_*put 5

你可以找到使用

db.coll.find({'dates.2-01-2015.9-10.ava': "yes"},{"userid":1,'_id':0})
Run Code Online (Sandbox Code Playgroud)

这里为'dates.2-01-2015.9-10.ava':'yes'用于查找ava的值为yes,类似于从JSON对象访问值,第二个参数用于仅从查询{"userid"获取userid ":1, '_ ID':0}

输出将是

{ "userid" : "abcde" }
{ "userid" : "abcde" }
Run Code Online (Sandbox Code Playgroud)

如果删除第二个参数,您将根据第二个参数获得结果中的整个文档,您可以过滤所需的字段