我是编写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'
})
}));
是的,我正在尝试检索“电子邮件”以及其他一些字段。
答案 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")
}