2017-09-20 10 views
1

mongodbのnode.jsドライバを使って2つの動的プロパティをクエリする必要があります。ここでMongoDb Node.jsネストされたオブジェクトのクエリが機能していませんか?

は、データ構造です:

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

注これは「オブジェクトリテラルで動的なキーを作成する方法」の複製ではないこと:

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

ここに私のコードです。 mongodbドライバのnode.js .find()メソッドはオブジェクトリテラルを受け入れません。私はそれが正確に受け入れるもののドキュメントを見つけることができません。

答えて

0

_idプロパティは、クエリオブジェクト内に存在する必要があり、別々ではありません。

は、ここでそれを行う方法は次のとおりです。

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

collections.find(query); 
関連する問題