编辑
我现在意识到 session 文档的字段为 session
以及其他一切的值(value)。所以cookie: { passport: { user:... } } }
不是嵌套对象,它们都只是一个大字符串。
现在我可以使用 $regex 查询来查找我需要的内容:
Session.find({
'session': {$regex : ".*jane@gmail.com.*"}
}, function(error, session){
========原始问题==========
我正在使用 connect-mongo 将用户 session 保存到 MongoDB,我想查询 session
集合来查明用户是否有事件 session 。
用户名存储在 sessions.cookie.passport.user
下的集合中但我的查询返回空。
这是一个示例 session 文档:
{
"_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){
如何查询数据库以通过给定用户名检索 session ?
谢谢!
最佳答案
我会尝试
Session.find({
"session.cookie.passport.user": "jane@gmail.com"
}, function(error, session){
关于node.js - 查询 MongoDB 嵌套字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40684892/