查询MongoDB嵌套字段
编辑
我现在已经意识到会话文档有一个FIELD session
和一个VALUE值。 所以cookie: { passport: { user:... } } }
不是嵌套对象,它们都只是一个大string。
所以,现在我可以使用$正则expression式查询来find我需要的:
Session.find({ 'session': {$regex : ".*jane@gmail.com.*"} }, function(error, session){
=========原来的问题==========
我正在使用connect-mongo将用户的会话保存到MongoDB,我想查询session
集合以查明用户是否有活动的会话。
用户名存储在sessions.cookie.passport.user
下的集合中,但是我的查询返回空。
以下是一个会话文档示例:
{ "_id": "orxJPolqKQ11rZdYhTKMuS90G-zDrrKk", "session": "{ \"cookie\":{ \"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"}, \"flash\":{}, \"passport\":{ \"user\":\"jane@email.com\" // <- This is what I want! } // ... More info here...
我到目前为止试过的查询:
Session.find({ "session.cookie.passport.user": "jane@gmail.com" }, function(error, session){
和,
Session.find({ "session.cookie.passport": {"user": "jane@gmail.com"} }, function(error, session){
和,
Session.find({ session: { cookie: { passport: { user: "jane@gmail.com" } } } }, function(error, session){
和,
Session.find({ "session": { "cookie": { "passport": { "user": "jane@gmail.com" } } } }, function(error, session){
然后我尝试更简单的查询来逐步构build它们(下一个返回所有文档):
Session.find({ "session": {$exists: true} }, function(error, session){
但是这个返回零文件:
Session.find({ "session.cookie": {$exists: true} }, function(error, session){
我怎样才能查询数据库检索一个给定的用户名会话?
谢谢!
我会尝试
Session.find({ "session.cookie.passport.user": "jane@gmail.com" }, function(error, session){