我需要使用Node.js驱动程序在MongoDb中找到嵌套对象。
当属性名称为动态时,我无法访问嵌套属性。这是我的代码:
//This gives expected results but "name1" isn't dynamic
collection.find({ 'followers.name1': { $exists: false } })
//Here's what I tried that does not give expected results
const username = "name1"
let query = { followers: {} }
query.followers[username] = { $exists: false }
collection.find(query)
以下是数据库结构的一个示例:
{
"_id":"xxxxxxxxxxx",
"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
}
}
}
编辑:我的问题与标记为重复的问题不重复。 MongoDb find()参数不是对象文字。这就是我的问题的全部要点,像对象文字那样使用它并不起作用。
答案 0 :(得分:0)
我最终找到了解决方案。密钥需要是一个字符串,所以你需要这样做:
const username = 'name1'
let query = {}
query['followers.'+username] = { $exists: false }
collection.find(query)