如何使用嵌套的Mongodb查询从集合中获取数据

时间:2016-06-03 03:14:06

标签: mongodb mongodb-query

我是编写MongoDb查询以获取数据的新手。我正在尝试编写嵌套查询以从会话集合中获取用户数据。

基本上我想要double in = scan.nextDouble();。 但是我无法获得db.sessions.passport.user.email所需的值。

我正在使用的查询如下:

vdipali8@gmail.com

以下是我的会话集合:

db.sessions.find({"session.passport.user.email":"vdipali8@gmail" });

db.sessions.find().pretty()

会话集合在我的快速节点服务器文件中生成如下:

{
        "_id" : "xi8sMgfYywLJdoZPpUHKa3Uau3wY",
        "session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"passport\":{\"user\":{\"_id\":\"5750ec592ecb2c0bfb5d39\",\"email\":\"vdipali8@gmail.com\",\"lastName\":\"Vl\",\"firstName\":\"Dipali\",\"facebookid\":\"13596511\",\"__v\":0}}}",
        "expires" : ISODate("2016-06-17T02:47:45.042Z")
}

及其模式声明如下:

app.use(session({ secret: 'keyboard cat', 
    store: new MongoStore({ 
            mongooseConnection: mongoose.connection,
            collection: 'sessions'
        }) 
}));

是的,我正在尝试检索“电子邮件”以及其他一些字段。

1 个答案:

答案 0 :(得分:0)

不可能, 你的查询是正确的但session field is STRING所以你不能在STRING字段中使用mongodb中的点运算符。 请将对象放在会话字段中然后它将起作用。

像这样

{
    "_id": "xi8sMgfYywLJdoZPpUHKa3Uau3wY",
    "session": {
        "cookie": {
            "originalMaxAge": null,
            "expires": null,
            "httpOnly": true,
            "path": ""
        },
        "passport": {
            "user": {
                "_id": "5750ec592ecb2c0bfb5d39",
                "email": "vdipali8@gmail.com",
                "lastName": "Vl",
                "firstName": "Dipali",
                "facebookid": "13596511",
                "__v": 0
            }
        }
    },
    "expires": ISODate("2016-06-17T02:47:45.042Z")

}