是否有一个javascript库,允许我在类似于MongoDB的查询语言的DSL中表达对象谓词?为了清楚大型程序,我希望能够说:
var obj = {
a: 1,
b: 'abcdefg'
}, qry = {
a: { $gt: 0 },
b: /^abc/
};
if(query(qry).matches(obj)) {
// do something appropriate since
}
Run Code Online (Sandbox Code Playgroud)
代替:
var obj = {
a: 1,
b: 'abcdefg'
};
if(obj.a>0 && qry.b.test(obj.b)) {
// do something appropriate
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Node.js,因此NPM上的任何内容都会很棒.如果库可以从数组中选择对象以及仅匹配单个对象,那将是一个额外的好处.
我回顾了这两个相关的问题,但对我的情况并没有特别的帮助:
我有一个有趣的用例,我希望通过GitLab共享存储库- 但是我们公司的每个用户的回购数量有限,所以我必须通过隐私来配置这些(即代替项目1的回购1,我有团队1的项目1和2→回购1,团队2的项目3和4→回购2).
起初,我打算在分支名称创建伪命名空间,例如project1-branch1
,project2-branch1
,project2-branch2
-但是我后来了解到,git的包括名称空间是应该区分不同的命名空间的参考,同时共享一个对象存储功能.我试图通过承诺不同的分支,以不同的命名空间本地测试这一点,但是我仍然看到任何所有分支(或没有!)命名空间:
$ git init .
Initialized empty Git repository in ~/tmp/test/.git/
$ git --namespace test1 checkout --orphan test1
Switched to a new branch 'test1'
$ touch test1
$ git --namespace test1 add -- test1
$ git --namespace test1 commit -m test1
[test1 (root-commit) 27f9d70] test1
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test1
$ git --namespace test2 checkout --orphan test2
Switched to a new branch …
Run Code Online (Sandbox Code Playgroud) 我注意到在将文档保存到集合时,MongoDB将多个空间折叠在一起(放入一个空间).它不仅仅是前导和尾随空格,而是任何空间序列 - 只有空格,而不是所有空格(仅用空格和制表符测试).当使用Java驱动程序以及交互式mongo shell时会发生这种情况,所以我猜它是数据存储区本身的"特性".
不可否认,我不喜欢我的价值观中无关的空白,我在剥离它们的过程中发现了这一点.但是,这种行为似乎很奇怪,因为数据存储通常被期望避免"烹饪"或以其他方式更改数据,超出符合底层存储约束的最低限度.否则(未向用户/开发人员声明)可能导致数据丢失或精度降低.此外,为什么要折叠空间而不是在头部和尾部完全修剪它们 - 为什么它们会在非空间角色之间折叠呢?
> db.test.remove()
> db.test.save({x: " x \t\t\t x "})
> db.test.findOne()
{ "x" : " x \t\t\t x " }
Run Code Online (Sandbox Code Playgroud)
我是否错误地启用了此功能,还是默认启用?我在JIRA上找不到任何东西.这对我来说似乎是一个错误,但也许我只是特别的.MongoDB版本2.0.2
Spring Batch是否有基于Mongo的作业存储库?如果没有,我是否需要实施JobInstanceDao
及其兄弟姐妹?是否有任何例子或现有作品可以帮助这项工作?
spring mongodb spring-batch spring-data spring-data-document
如何在 Mongo shell 中对 NumberLong 值执行精确算术?据我了解,Javascript 只有一种数字类型 -number
通常仅限于 54 位浮点精度。
使用(例如)标准加法的直接算术显示将强制转换为较低精度类型:
> NumberLong("123456789012345678")+NumberLong("1")
123456789012345680
> NumberLong("123456789012345678")+NumberLong("2")
123456789012345680
Run Code Online (Sandbox Code Playgroud)
我可以看到如何使用字符串表示形式提取 NumberLong 的部分,但这似乎效率低下,并且对于增量或除法等算术运算没有用处。
我很难找到MercurialEclipse插件的官方主页(有吗?),我有一种奇怪的感觉,这个名字实际上有多个项目.
以下是我发现的一些项目:
另见我提交的这张票:http://www.javaforge.com/issue/23290
mongodb ×4
javascript ×2
eclipse ×1
git ×1
gitlab ×1
mercurial ×1
mongo-shell ×1
mongodb-java ×1
namespaces ×1
node.js ×1
predicate ×1
spring ×1
spring-batch ×1
spring-data ×1