我需要使用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()方法不接受对象文字。我无法找到它完全接受的文件。
答案 0 :(得分:0)
您的_id
属性需要位于查询对象中,而不是分开。
以下是如何操作:
let query = { _id: id };
query['followers.'+username] = { $exists: true }
collections.find(query);