标签: morphia

使用或运算符进行Morphia查询

我想知道如何使用'或'运算符编写Morphia mongodb查询
我写了这样的mongodb查询这个工作正常

db.Inv.find({$or:[{sug_id:2},{grp_id:2}]})  
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在morphia中写这个时,我感到很困惑,以下查询是错误的,但是如何写出与此类似的东西

List<Inv> invs = ds.find(Inv.class).field("grp_id").hasAnyOf(grpId).or(field("sug_id")).hasAnyOf(grpId).asList();  
Run Code Online (Sandbox Code Playgroud)

谢谢

java mongodb morphia

10
推荐指数
1
解决办法
9476
查看次数

scala中是否有mongodb的类似orm的库?

似乎只有casbah我们可以在scala中使用,但我希望scala有一个类似于orm的库,比如morphiajava或者其他东西.

有没有?我不想morphia在scala中使用因为我必须将java集合转换为scala


UPDATE

我已经尝试了其中一些,但仍然找不到合适的.有些人很难让scala新手入手.

最后

最后,我选择了mongo-scala-driver,它很棒.感谢大家.

scala mongodb morphia

9
推荐指数
1
解决办法
4832
查看次数

morphia和如何更新现有文档字段

我是MongoDb和Morphia的新手,并
试图学习如何更新我的文档.

我无法从这个页面看到/理解如何做到这一点:http:
//www.mongodb.org

我的文档如下所示:(可能在这里有些错误)

@Entity
public class UserData {

    private Date creationDate;
    private Date lastUpdateDate;

    @Id private ObjectId id;
    public String status= "";
    public String uUid= "";


    public UserData() {
        super();
        this.statistic = new Statistic();
        this.friendList = new FriendList();
    }

    @Embedded
    private Statistic statistic;
    @Embedded
    private FriendList friendList;

    @PrePersist
    public void prePersist() {
        this.creationDate = (creationDate == null) ? new Date() : creationDate;
        this.lastUpdateDate = (lastUpdateDate == null) ? creationDate : new Date();
    }
}
Run Code Online (Sandbox Code Playgroud)

在那个页面上,我看不到任何地方,他们描述如何更新我的UserData …

java mongodb morphia

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

Morphia中的复杂AND-OR查询

我一直在尝试组合Query接口的and()和or()方法来创建一组条件,其中有2个条件列表,并且必须满足每个条件中的至少一个条件.

我阅读了这个讨论,并一直在尝试使用Query.and()来组合我的两个$或子句.

基本上,我想说:

Criteria[] arrayA;
Criteria[] arrayB;

// Programatically populate both arrays

Query q = dao.createQuery().and(
    q.or(arrayA),
    q.or(arrayB)
);
Run Code Online (Sandbox Code Playgroud)

我正在使用标准数组,因为我必须遍历几个不同的输入以生成我需要的特定条件,这种方法适用于我只使用单个$或者,但我不能让Morphia生成查询我希望当我尝试在$中包含$或$时,如上所述.我发现没有$和查询以及第二个$或者已经覆盖了第一个$,就像我只是简单地调用或()两次一样.

例如,我希望生成一个查询,如下所示:

{
    "$and": {
    "0": {
        "$or": {
            "0": //Some criteria,
            "1": //Some criteria,
            "2": //Some criteria,
        }
    },
    "1": {
        "$or": {
            "0": //Some other criteria,
            "1": //Some other criteria,
            "2": //Some other criteria,
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我只是得到这样的查询:

{
    "$or": {
        "0": //Some other criteria,
        "1": //Some other criteria,
        "2": //Some other criteria,
    }
}
Run Code Online (Sandbox Code Playgroud)

我看不到很多文档,但看看测试用例,这似乎是解决这个问题的正确方法.任何人都可以帮助解释为什么这不符合我的预期吗?

(这个问题被 …

java mongodb morphia

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

MongoDB的Java ORM开销是多少

使用Java ORM进行MongoDB的开销是多少,或者我们在基本驱动程序级别读取或写入更好?

我们将根据我们的要求添加Mongo DB.

java
-morphia
-spring-data 有几种java ORM映射工具
- 其他

Morphia上一版本在一年多前发布,
但Spring数据得到了积极维护.如果我即将开始,应该使用哪一个,

java orm mongodb morphia spring-data

9
推荐指数
1
解决办法
5010
查看次数

Scala,Morphia和Enumeration

我需要在Morphia中存储Scala类.除非我尝试存储_ <:枚举的集合,否则它会很好用

Morphia抱怨它没有这种类型的序列化器,我想知道如何提供一个.现在我将集合类型更改为Seq [String],并在集合中的每个项目上调用toString来填充它.

这很好,但我不确定这是否正确.

enums scala morphia

9
推荐指数
1
解决办法
490
查看次数

Mongodb:`com.mongodb.MongoSocketReadException:过早地到达流的末端`与morphia

我有一个简单的数据结构(Transaction下面引用)插入到mongodb中:

{"amount":111,"debitAcc":"588188286231743e7d5c923d","type":"CHARGE"}
Run Code Online (Sandbox Code Playgroud)

我得到以下错误堆栈:

com.mongodb.MongoSocketReadException: Prematurely reached end of stream
        at com.mongodb.connection.SocketStream.read(SocketStream.java:88)
        at com.mongodb.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:494)
        at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:224)
        at com.mongodb.connection.UsageTrackingInternalConnection.receiveMessage(UsageTrackingInternalConnection.java:96)
        at com.mongodb.connection.DefaultConnectionPool$PooledConnection.receiveMessage(DefaultConnectionPool.java:440)
        at com.mongodb.connection.WriteCommandProtocol.receiveMessage(WriteCommandProtocol.java:262)
        at com.mongodb.connection.WriteCommandProtocol.execute(WriteCommandProtocol.java:104)
        at com.mongodb.connection.InsertCommandProtocol.execute(InsertCommandProtocol.java:67)
        at com.mongodb.connection.InsertCommandProtocol.execute(InsertCommandProtocol.java:37)
        at com.mongodb.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:168)
        at com.mongodb.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:289)
        at com.mongodb.connection.DefaultServerConnection.insertCommand(DefaultServerConnection.java:118)
        at com.mongodb.operation.InsertOperation.executeCommandProtocol(InsertOperation.java:76)
        at com.mongodb.operation.BaseWriteOperation$1.call(BaseWriteOperation.java:139)
        at com.mongodb.operation.BaseWriteOperation$1.call(BaseWriteOperation.java:133)
        at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:422)
        at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:413)
        at com.mongodb.operation.BaseWriteOperation.execute(BaseWriteOperation.java:133)
        at com.mongodb.operation.BaseWriteOperation.execute(BaseWriteOperation.java:60)
        at com.mongodb.Mongo.execute(Mongo.java:845)
        at com.mongodb.Mongo$2.execute(Mongo.java:828)
        at com.mongodb.DBCollection.executeWriteOperation(DBCollection.java:342)
        at com.mongodb.DBCollection.insert(DBCollection.java:337)
        at com.mongodb.DBCollection.insert(DBCollection.java:328)
        at org.mongodb.morphia.DatastoreImpl.saveDocument(DatastoreImpl.java:1297)
        at org.mongodb.morphia.DatastoreImpl.tryVersionedUpdate(DatastoreImpl.java:1340)
        at org.mongodb.morphia.DatastoreImpl.save(DatastoreImpl.java:1286)
        at org.mongodb.morphia.DatastoreImpl.save(DatastoreImpl.java:775)
        at org.mongodb.morphia.DatastoreImpl.save(DatastoreImpl.java:758)
Run Code Online (Sandbox Code Playgroud)

我的mongodb版本是3.4.2.

Intereting是我在我的本地开发环境中没有问题(mint linux 18.1).但它无法在我的SIT环境中运行,这是一个ubuntu 16.04

任何的想法?

使用代码更新以插入文档

在此输入图像描述

在哪里transactionDao.save(...) …

mongodb morphia mongodb-java

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

Morphia用于Scala

可以在Scala中使用Morphia吗?

是否还有支持scala的MongoDB的其他轻量级ORM?

orm scala mongodb morphia

8
推荐指数
2
解决办法
2746
查看次数

查询MongoDB以获取有序的不同值

我使用Morphia Java驱动程序查询包含以下形式的集合的MongoDB:

MyCollection {
   TypeA
   TypeB
}
Run Code Online (Sandbox Code Playgroud)

我想使用以下代码检索TypeB的所有不同值:

DBCollection myCol = getDatastore().getCollection(MyCollection.class);
List typeBs = myCol.distinct("TypeB");
Run Code Online (Sandbox Code Playgroud)

上面的代码按预期工作,但不同值列表当然没有排序.

我已经尝试了以下代码:

DBCollection myCol = getDatastore().getCollection(MyCollection.class);
DBObject orderBy = new BasicDBObject("$orderby", new BasicDBObject("TypeB", 1);
List typeBs = myCol.distinct("TypeB", orderBy);
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,列表是空的,我的假设在哪里错了?

UPDATE

通过使用CLI我发现以下查询返回了预期的结果:

> db.mycollection.find({$query : {}, $orderby : { TypeB : 1 }})
Run Code Online (Sandbox Code Playgroud)

所以我相应调整了我的代码:

DBCollection myCol = getDatastore().getCollection(MyCollection.class);

BasicDBObject ascending = new BasicDBObject("TypeB", 1);
BasicDBObject filter = new BasicDBObject();
filter.put("$query", new BasicDBObject());
filter.put("$orderby", ascending);

List typeBs = myCol.distinct("TypeB", filter);
Run Code Online (Sandbox Code Playgroud)

仍然结果包含0个条目!

真正让我困惑的是,如果我使用.find而不是.distinct,同样的查询是有效的:

DBCollection myCol = …
Run Code Online (Sandbox Code Playgroud)

java database mongodb nosql morphia

8
推荐指数
1
解决办法
9084
查看次数

找不到适合我的课程的编解码器

我有一个名为 Signal 的简单类。类如下所示:

public class Signal {
    private String id;
    private Date timestamp;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public Date getTimestamp() {
        return timestamp;
    }
    public void setTimestamp(Date timestamp) {
        this.timestamp = timestamp;
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试在 MongoDB (v3.4) 中插入信号。我使用以下方法插入:

public boolean xyz(Signal signal) {
            try {
                DatabaseConnection databaseConnection =DatabaseConnection.getInstance();
                MongoClient mongoClient = databaseConnection.getMongoClient();
                MongoDatabase db = mongoClient.getDatabase("myDb"); 
                MongoCollection<Signal> collection = db.getCollection("myCollection", Signal.class);
                collection.insertOne(signal);

                return true;
            } catch (Exception e){ …
Run Code Online (Sandbox Code Playgroud)

java mongodb morphia

7
推荐指数
2
解决办法
2万
查看次数

标签 统计

morphia ×10

mongodb ×9

java ×6

scala ×3

orm ×2

database ×1

enums ×1

mongodb-java ×1

nosql ×1

spring-data ×1