У меня есть база данных mongodb, которая содержит записи доменов и целое число просмотренных «попаданий».
record =
{
"dom" : "Somedomain.com",
"hits" : 23
}
Я хочу написать несколько хранимых процедур mongodb для обработки этих записей на сервере. MongoDb может хранить процедуры в javascript.
Я хочу (чтобы привести тривиальный пример) получить совокупность количества обращений для двух доменов. В Python/pymongo я могу сделать это легко — я могу получить db.find({"dom": "domainname.com"}) записи для двух доменов, проанализировать возвращенную запись как JSON, извлечь номера обращений и добавить их.
Однако я не могу сделать то же самое в javascript. Часть проблемы, по-видимому, заключается в том, что find возвращает BSON, а не JSON, и, похоже, нет собственного способа его преобразования.
> This is in the Mongo Shell, which is mostly javascript.
> var r = db.test_collection.find({dom:"somedomain.com"},{hits:true,_id:false})
> r
{ "hits" : 1043 }
> var j = JSON.parse(r)
2016-03-03T17:27:52.046-0500 SyntaxError: Unexpected token D
> var r = db.test_collection.find({dom:"somedomain.com"},{hits:true,_id:false}).valueOf()
> r
{ "hits" : 1043 }
> var j = JSON.parse(r)
2016-03-03T17:27:52.046-0500 SyntaxError: Unexpected token D
Источником этой «SyntaxError», по-видимому, является BSON против JSON.
> var r = db.test_collection.find({dom:"somedomain.com"},{hits:true,_id:false}).valueOf()
> r.hits
>
Я не могу получить значение «попадания», где я могу его использовать.
Я могу сделать это тривиально на Python с Pymongo, но не в оболочке mongo и не в javascript.
Я хочу, чтобы хранимые процедуры javascript могли извлекать значения из базы данных и обрабатывать их, наконец, возвращая результат. Но я не могу получить фактическое значение (в данном случае число попаданий), чтобы сделать это. Кто угодно?