- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Groovy 2.3.6、GMongo 1.2、Java 1.8、MongoDB 3.0.0...
我正在尝试使用doEval()
来获取集合中的文档计数。 (出于各种原因,我想使用 doEval()
而不是 count()
)。使用单行字符串参数调用 doEval()
将返回 retval,其 double 值为 1.0,而 ok 则返回 double 值 1.0,这正是我所期望的:
def str = "db.configurations.count({name: 'Mike'})"
database.doEval(str)
如果参数位于多行,则返回的 retval 为 null(ok 为 1.0)。
def str = "db.configurations.count({\nname: 'Mike'\n})"
database.doEval(str)
我希望 doEval 返回 retval 1.0,而不是 null,就像第一个示例一样。这是一个错误还是我的期望不正确? doEval()
应该支持多行字符串参数吗?
最佳答案
来自doEval()
javadoc:
Evaluates JavaScript functions on the database server. This is useful if you need to touch a lot of data lightly, in which case network transfer could be a bottleneck.
Parameters:
code
- String representation of JavaScript function
args
- arguments to pass to the JavaScript function
因此,您没有将 javascript 函数传递给 doEval
方法。不管怎样,你得到的结果与直接调用 mongo shell 得到的结果是一致的:
> db.eval("db.configurations.count({name: 'Mike'})");
1
> db.eval("db.configurations.count({\nname: 'Mike'\n})");
null
(我没有深入研究 mongo shell javascript 内部结构...:-)
传递一个javascript函数你可以得到你想要的结果:
println db.configurations.count([name: 'Mike'])
def str = '''function(name) {
return db.configurations.count({
name: name
});
}'''
println db.doEval(str, 'Mike')
以上产量:
1
[serverUsed:/127.0.0.1:27017, retval:1.0, ok:1.0]
关于java - 带有多行字符串参数的 doEval(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29634138/
使用 Groovy 2.3.6、GMongo 1.2、Java 1.8、MongoDB 3.0.0... 我正在尝试使用doEval()来获取集合中的文档计数。 (出于各种原因,我想使用 doEval
我是一名优秀的程序员,十分优秀!