是否存在将普通Mongodb查询更改为Java Mongodb驱动程序特定查询?我想知道在普通的MongoDB的每个查询中,Java Mongodb驱动程序中是否存在等效查询?因为我们在普通Mongodb中查询子文档数组的示例,但是通过Java MongoDB驱动程序执行相同操作,我们没有足够的示例。
答案 0 :(得分:3)
Java驱动程序和python是最发达的驱动程序,因此您可以在驱动程序DOCS中进行检查。通常,这个想法(命令的结构)与shell中你需要助手来构造命令是一样的。
在Java中,本文档可以提供一些有关其工作原理的提示:DOCS
所以
<强> $推: 强>
Mongoshell DOCS 例如:
db.students.update(
{ name: "joe" },
{ $push: { scores: 89 } }
)
其中{name:“joe”}是一个标识要更新的正确文档的查询,分数是一个数组字段,89将被删除。
Java DOCS
例如: 看看这个问题:(MongoDB Java) $push into array
<强> $ elemmatch: 强>
Mongoshell DOCS
例如: 看看这个问题:Convert MongoDB query into Java
$ slice:
Mongoshell DOCS
语法:
db.collection.update( <query>,
{ $push: {
<field>: {
$each: [ <value1>, <value2>, ... ],
$slice: <num>
}
}
}
)
在Java中就像(因为我没有找到这个确切的更新uitilized slice在java中的一个例子,这是我自己构建的):
final MongoClient mongoClient = new MongoClient();
final DBCollection coll = mongoClient.getDB("TheDatabase").getCollection("TheCollection");
coll.update(<query>, new BasicDBObject("$push",
new BasicDBObject(<field>,
new BasicDBObject("$each",
new BasicDBList()
.put(0,<value1>)
.put(1,<value2>)
.put(3,<value3>))
.append('$slice',-5)));
示例:在其他情况下也可以查看这些问题以了解切片的用法: $slice mongoDB Java, Mongo java driver - retrieve slice of array without any other field 或者这个帖子:https://groups.google.com/forum/#!topic/mongodb-user/4c3P0_FOzyM
答案 1 :(得分:2)
没有自动方式将shell查询转换为Java查询,但Java驱动程序支持shell中支持的所有查询。正如Attish给出的例子,无论你看到什么
{ "$someOperator" : { "someKey": "someValue" } }
你需要将它们转换为使用BasicDBObject:
new BasicDBObject("$someOperator", new BasicDBObject("someKey", "someValue"));
有效
{ key : value }
- &GT;
new BasicDBObject (key, value);