node.js - 查询 MongoDB 嵌套字段

标签 node.js mongodb session express mongoose

编辑

我现在意识到 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/

相关文章:

java - MongoDB 与 Java 中的条件不同

javascript - 在没有 Express 的情况下使用 Node.js 客户端 session

wcf - 用于 WCF 和集成测试的 RavenDb session 管理

PHP PHPSESSID 利用困惑

Node.js 和 FindAll 上的 Sequelize : res. json?

node.js - 如何从浏览器中的精简服务器中删除 "Connected to BrowserSync"徽章

javascript - 防止删除相关模型实例 - Loopback 3

javascript - 使用 Mongoose 创建字典模式

c# - 在 C# 中更新数组中的多个对象

node.js - 获取 "first argument must be a string or Buffer"错误