修改
我现在意识到会话文档的FIELD为session
,其他所有内容都为VALUE。所以cookie: { passport: { user:... } } }
不是嵌套对象,它们只是一个大字符串。
所以现在我可以使用$ regex查询来查找我需要的内容:
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){
然后我尝试了更简单的查询来逐步构建它们(下一个返回所有文档):
Session.find({
"session": {$exists: true}
}, function(error, session){
然后这个文件返回零:
Session.find({
"session.cookie": {$exists: true}
}, function(error, session){
如何查询数据库以按给定用户名检索会话?
谢谢!
答案 0 :(得分:1)
我会尝试
Session.find({
"session.cookie.passport.user": "jane@gmail.com"
}, function(error, session){