MongoDb Node.js查询嵌套对象不工作?

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

这是数据结构:

{ "_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 } 

请注意,这不是“如何在对象文字中创builddynamic键”的重复。 node.js mongodb驱动程序的.find()方法不接受对象字面值。 我无法find它准确接受的文档。

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

以下是如何做到这一点:

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