javascript - MongoDb Node.js 查询嵌套对象不起作用?

标签 javascript node.js mongodb

我需要使用 mongodb 的 node.js 驱动程序查询 2 个动态属性。

数据结构如下:

{
   "_id":"123456",
   "dateAdded":"2017-09-20T08:36:40.325Z",
   "followers":{
      "name1":{
         "followedOn":"2017-09-20T08:36:40.325Z",
         "unfollowedOn":null
      },
      "name2":{
         "followedOn":"2017-09-20T08:36:40.325Z",
         "unfollowedOn":null
      }
   }
}

这是我的代码:

//Working but not dynamic
collections.find({ '_id': '123456', 'followers.name1': { $exists: false } })

//My failed attempt at making it dynamic
const id = "123456"
const username = "name1"

let query = {}
query['followers.'+username] = { $exists: true } 

collections.find( { "_id": id, query }

请注意,这不是“如何在对象文字中创建动态键”的重复。 Node.js mongodb 驱动程序的 .find() 方法不接受对象文字。我找不到它确切接受的文档。

最佳答案

您的 _id 属性需要位于查询对象内,而不是单独的。

具体操作方法如下:

let query = { _id: id };
query['followers.'+username] = { $exists: true } 

collections.find(query);

关于javascript - MongoDb Node.js 查询嵌套对象不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46327403/

相关文章:

javascript - Mongoose 引用不起作用

node.js - GraphQL Node JS 应用程序的单元测试

arrays - Mongodb:查询嵌套在数组中的json对象

javascript - 蒙戈 : Limit returned records to an incremental count on slice

javascript - 如何在java中发送响应期间压缩Rest服务中的数据(对象)

javascript - 在 Visio Web Access ASPX 中自动缩放以适合

JavaScript 语法错误

javascript - JSON.stringify(localStorage) - 按键过滤

javascript - Node.js 错误静默失败

mongodb - 自动将 Mongodb ObjectId 映射到字符串和从字符串映射