【发布时间】:2016-03-03 22:47:50
【问题描述】:
我有一个 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 vs JSON
> var r = db.test_collection.find({dom:"somedomain.com"},{hits:true,_id:false}).valueOf()
> r.hits
>
我无法在可以使用的地方获取“命中”值。
我可以在 Python 中使用 Pymongo 轻松做到这一点,但不能在 mongo shell 中,也不能在 javascript 中。
我希望存储的 javascript 程序能够从数据库中检索值并处理 他们,最终返回一个结果。但我无法得到实际值(在这种情况下,命中数) 这样做。有人吗?
【问题讨论】:
-
mongodb 不支持存储过程。我建议用一些示例 mongodb 文档来详细说明您的问题。同时发布您对尝试执行的操作的期望
标签: javascript json mongodb stored-procedures bson