2017-09-20 17 views
0

Node.jsドライバを使用してMongoDbでネストされたオブジェクトを見つける必要があります。.find()動的プロパティ名を使用したネストされたオブジェクト

プロパティ名がの場合は、プロパティ名がネストされたプロパティにアクセスする際に問題があります。

//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 
     } 
    } 
} 

編集:ここに私のコードです私の質問は、1の重複が重複としてマークされていません。 MongoDb find()引数はオブジェクトリテラルではありません。それは、オブジェクトリテラルがうまくいかないように、私の質問の全体のポイントです。

+0

iは、データがあなたの質問に応じ – Vignesh

+0

を格納する方法を示すサンプルデシベルを持つことができます 'followers'は静的であり、' name1'はなら、私を修正し、動的です私は間違っています – Vignesh

+0

@Vignesh correct – cooldude101

答えて

0

私は最後に解決策を見つけました。あなたがする必要があるので、キーのニーズが文字列であることを:

const username = 'name1' 
let query = {} 
query['followers.'+username] = { $exists: false } 

collection.find(query) 
関連する問題