My bad, found the solution, it's rather a Javascript specific problem:
For simple keys stored in variables you could use [key]
For dotted keys like in my case (mylist.key) you have to define the object in an official way, then it works. Based on my example above:
var mylist = {}; mylist[<set searchkey here>] = ''; modules.collectionAccess.collection('mycollection').find({ mylist : { $exists : true } }, function (err, entries){ ... });
It is important, that the object variable ("mylist" in my example) has the same name as the column name of the collection that holds the object! Maybe there is a better solution but this works.
Regards
I was wrong. The query above will return ALL records (whether search key is in record or not). After trying a lot I found out you have to define the whole query this way:
var mylist = {}; mylist['<column of collection>.' + <search key here>] = { $exists : true }; modules.collectionAccess.collection('mycollection').find(mylist, function (err, entries){ ...
That works and will return the expected result.
Sorry for that and Regards
Tayger
Hello
I'm trying to find objects in objects stored in a collection. An object looks like this:
{
"GNJB5B4": {
"title": "some text",
"rating": 2
},
"GNF3CHA": {
"title": "some text",
"rating": 5
}
}
Let's assume I have stored this object in collection mycollection and there in column mylist.
I would like to know which records have an entry with key "GNJB5B4". Reading in MongoDBs documentation I could find a solution:
This works like a charm and outputs the amount of records in mycollection with the given entry in mylist.
I now want to set the search key ("mylist.GNJB5B4") by a variable like:
In this case the output is always:
undefined
Conclusion: As soon as I try to replace a static search value by a variable value the result is "undefined".
Any idea/solution how to fix that?
Regards