标签: jongo

(MongoDB Java)$ push into array

我正在使用mongo 2.2.3和java驱动程序.我的困境,我必须把一个字段和值推入一个数组,但我似乎无法弄清楚如何做到这一点.我的数据样本:

"_id" : 1,
"scores" : [
    {
        "type" : "homework",
        "score" : 78.97979
    },
    {
        "type" : "homework",
        "score" : 6.99
    },
    {
        "type" : "quiz",
        "score" : 99
    }
]
Run Code Online (Sandbox Code Playgroud)

我可以$推入shell:

db.collection.update({_id:1},{$push:{scores:{type:"quiz", score:99}}})
Run Code Online (Sandbox Code Playgroud)

但是当我把它翻译成java时,我迷惑自己并将键盘放在墙上.

到目前为止我的java代码(不完整和错误):

DBObject find = new BasicDBObject("_id", 1);
DBObject push = new BasicDBObject("$push", new BasicDBObject(
                        "scores", new BasicDBObject()));
Run Code Online (Sandbox Code Playgroud)

java mongodb nosql-aggregation mongo-java jongo

34
推荐指数
4
解决办法
3万
查看次数

Jongo vs(DBObject)JSON.parse

我试图找出Jongo的优势而不是简单地使用(DBObject)JSON.parse(...)解组json命令并以下面的方式使用DBObject.

有性能优势吗?

    @Override
public List<T> getEntityList(Integer limit, String query) throws Exception {
    log.entering(DaoImpl.class.toString(), "getEntityList, with criteria of " + query);
    DBObject criteriaObject = null;
    ArrayList<T> list = new ArrayList<T>();

    if (query != null)
        criteriaObject = (DBObject)JSON.parse(query);

    DBCursor cursor = null;

    try {
        if (criteriaObject != null) {
            log.log(Level.FINEST, "getting the objects using a search criteria: " + criteriaObject);
            cursor = MongoDB.getInstance().getCollection(collection).find(criteriaObject);
        } else {
            log.log(Level.FINEST, "getting the objects without a criteria");
            cursor = MongoDB.getInstance().getCollection(collection).find();
        }

        ............etc, etc, etc
Run Code Online (Sandbox Code Playgroud)

谢谢!

java mongodb jongo

5
推荐指数
1
解决办法
2340
查看次数

使用 Jongo 和 MongoDB 将 Jackson 反序列化中的 ObjectId _id 重命名为 id

我刚刚开始使用 play 框架、jongo 和 MongoDB 开发一个项目。该项目最初是在 Play 2.1 中使用 pojo 编写的,其 String id 字段同时注释有: @Id 和 @ObjectId 这将作为 ObjectId 持久保存到 Mongo,并且反序列化时会将 id 输出为: "id":"53fcb9ede4b0b18314098d10" 例如。

由于升级到 Jongo 1.1 和 Play 2.3.3,id 属性在反序列化时始终命名为“_id”,我希望该属性保留字段名称,但无法使用 @JsonProperty("custom_name") 作为 Jongo @Id 注释@JsonProperty("_id") 在幕后执行。

import org.jongo.marshall.jackson.oid.Id;
import org.jongo.marshall.jackson.oid.ObjectId;

public class PretendPojo {

    @Id
    @ObjectId
    private String id;

    private String name;

    public PretendPojo() {
    }

    public PretendPojo(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = …
Run Code Online (Sandbox Code Playgroud)

java mongodb jackson playframework-2.0 jongo

5
推荐指数
1
解决办法
5205
查看次数

使用jongo驱动程序查询mongo的日期

我使用jongo驱动程序连接到我的mongoDB.

查询的语法 - 例如,某些年龄小于18岁 - 是

collection.find("{age: {$lt : 18}}");
Run Code Online (Sandbox Code Playgroud)

但如何查询日期?

在mongoDB中,日期键值对存储如下

{"date" : ISODate("2012-11-23T00:12:23.123Z")}
Run Code Online (Sandbox Code Playgroud)

所以我尝试了以下内容:

collection.find("{date: {$lt : ISODate(\"2012-11-23T00:13:00.000Z\")}}");
Run Code Online (Sandbox Code Playgroud)

但是在运行java代码时我遇到了这个异常:

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.IllegalArgumentException: {dateLastSeen: {$lt: ISODate("2012-11-23T00:13:00.000Z")}} cannot be parsed
        at org.jongo.query.Query.convertToDBObject(Query.java:33)
        at org.jongo.query.Query.<init>(Query.java:26)
        at org.jongo.query.QueryFactory.createQuery(QueryFactory.java:38)
        at org.jongo.Find.<init>(Find.java:42)
        ... 10 more
Caused by: com.mongodb.util.JSONParseException:
{dateLastSeen: {$lt: ISODate("2012-11-23T00:13:00.000Z")}}
                     ^
        at com.mongodb.util.JSONParser.parse(JSON.java:198)
        at com.mongodb.util.JSONParser.parseObject(JSON.java:231)
        at com.mongodb.util.JSONParser.parse(JSON.java:195)
        at com.mongodb.util.JSONParser.parseObject(JSON.java:231)
        at com.mongodb.util.JSONParser.parse(JSON.java:195)
        at com.mongodb.util.JSONParser.parse(JSON.java:145)
        at com.mongodb.util.JSON.parse(JSON.java:81)
        at com.mongodb.util.JSON.parse(JSON.java:66) …
Run Code Online (Sandbox Code Playgroud)

java date mongodb jongo

4
推荐指数
1
解决办法
4194
查看次数

在Jongo中按对象ID查找

我知道这个问题非常基本......我很抱歉.

我不能使用Jongo为Mongo做一个'ID by ID'.

我试过了

Iterator<MongoTest> all = db.getCollection("mongoTest").find("{'_id': ObjectId('5194d46bdda2de09c656b64b')}").as(MongoTest.class).iterator();
Run Code Online (Sandbox Code Playgroud)

错误:

java.lang.IllegalArgumentException: {'_id': ObjectId('5194d46bdda2de09c656b64b')} cannot be parsed
at org.jongo.query.JsonQuery.marshallQuery(JsonQuery.java:34)
at org.jongo.query.JsonQuery.<init>(JsonQuery.java:27)
at org.jongo.query.JsonQueryFactory.createQuery(JsonQueryFactory.java:52)
at org.jongo.Find.<init>(Find.java:41)
at org.jongo.MongoCollection.find(MongoCollection.java:79)
at org.jongo.MongoCollection.find(MongoCollection.java:75)
Run Code Online (Sandbox Code Playgroud)

我试过了

Iterator<MongoTest> all = db.getCollection("mongoTest").find(withOid(new ObjectId("5194d46bdda2de09c656b64b"))).as(MongoTest.class).iterator();
Run Code Online (Sandbox Code Playgroud)

正如在文档中一样,我甚至无法编译它......有两种可能的ObjectId类型.

de.undercouch.bson4jackson.types.ObjectId;
Run Code Online (Sandbox Code Playgroud)

告诉我

The constructor ObjectId(String) is undefined
Run Code Online (Sandbox Code Playgroud)

如果我使用

org.bson.types.ObjectId;
Run Code Online (Sandbox Code Playgroud)

它似乎工作得更好,有时 - 但它仍然告诉我这withOid( ObjectId )是未定义的.这并不奇怪,究竟是什么对象应该是该函数的一部分呢?

我的问题:如何在Jongo中通过_id进行查找?

java mongodb jongo

3
推荐指数
1
解决办法
3810
查看次数

在Jongo中,如何通过ID列表从Mongodb中查找多个文档

在mongodb中,我可以通过以下查询执行此操作:

find(
    { _id : { $in : [ ObjectId('5275c6721a88939923c3ea54'), ObjectId('5275c6721a88939923c3ea55'), ObjectId('5275c6721a88939923c3ea56'), ObjectId('5275c6721a88939923c3ea57'), ObjectId('5275c6721a88939923c3ea58') ] } }
)
Run Code Online (Sandbox Code Playgroud)

但是我们怎样才能使用Jongo代码呢?

我知道我们可以找到一个文件:

db.getCollection("mongoEg").findOne(Oid.withOid("5194d46bdda2de09c656b64b")).as(MongoTest.class);
Run Code Online (Sandbox Code Playgroud)

但如何通过Jongo在一个查询中获取多个文档?

mongodb jongo

3
推荐指数
1
解决办法
2742
查看次数

在Kotlin中注释属性时,注释的默认目标是什么?

Kotlin中的注释可以有不同的使用地点目标,如下所述:https://kotlinlang.org/docs/reference/annotations.html#annotation-use-site-targets

我的问题是:当没有明确定义use-site时,在类中注释属性时的默认目标是什么,如下例所示?

class Test {
  @SomeAnnotation
  var someProperty: String? = null
}
Run Code Online (Sandbox Code Playgroud)

背景

我正在尝试将Jongo作为Kotlin中的MongoDB客户端,并且在注释id字段时遇到问题.当它注释时,Jongo没有正确映射id属性:

@MongoId @MongoObjectId var id: String? = null
Run Code Online (Sandbox Code Playgroud)

有问题的注释只是杰克逊的元注释.但是,当我像这样注释属性时,它似乎工作,表明使用现场问题:

@field:[MongoId MongoObjectId]
var id: String? = null
Run Code Online (Sandbox Code Playgroud)

我希望这@field是默认的使用网站,但似乎不是.

annotations jackson kotlin jongo

2
推荐指数
1
解决办法
1258
查看次数

正则表达式查找字符串以字母开头,以斜杠结尾/

我有一个有1000个记录的集合有一个字符串列.

我正在使用Jongo API来查询mongodb.

我需要找到匹配的记录,其中列字符串以字母"AB"开头,以斜杠"/"结尾

需要查询查询的帮助以选择相同的.

谢谢.

regex mongodb jongo

0
推荐指数
1
解决办法
1万
查看次数