查询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){