Tag: morphia

Morphia List <Map >>返回嵌入式元素在查找操作时不是DBObject

我试图做这样的事情: package org.dnylabs.kosh.data; import java.net.UnknownHostException; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import com.google.code.morphia.Datastore; import com.google.code.morphia.Morphia; import com.google.code.morphia.annotations.Entity; import com.google.code.morphia.annotations.Id; import com.mongodb.Mongo; import com.mongodb.MongoException; @Entity public class Temp { @Id String _id; List<Map> strings; public Temp(){ strings=new LinkedList<Map>(); } public static void main(String []args) throws UnknownHostException, MongoException{ Mongo mongo=null; Morphia morphia=null; Datastore ds=null; mongo […]

在Morphia中,我如何更新ArrayList中的一个嵌入对象

使用Mongodb和Morphia一起真的很新,并看到许多高级答案如何做到这一点。 如果有可能我想简单地做这个@Embedded对象 包含Files对象的fileObjects 。 我无法更新Files的字段。 我想只更新一个字段f.ex String fileHash 。 @Entity public class BatchData { @Id private ObjectId id; @Embedded public ArrayList fileObjects = new ArrayList(); } 更新..在Morphia阅读维基更新不要“真的”说如何只在数组包含这样的Integer时才这样做: @Embedded List roomNumbers = new ArrayList(); 以下是我到目前为止的尝试: mongo.createUpdateOperations(BatchData.class).add(“fileObjects”, Files, false); 此代码插入的Files已在mongo中。 false不会检测到并将其插入数组的末尾。 我可以在Files添加唯一ID,以便检测到数据中是否存在要插入的Files ,然后只更新它? @Embedded public class Files { public Files() { } public int position; public String […]

Mongo连接泄漏与morphia

我有一个static Mongo = new Mongo()和Morphia morphia = new Morphia()对象的Servlet 。 每次调用GET ,我都会执行以下操作: doGet(…){ … datastore = morphia.createDatastore(mongo, dbName); … } 我没有关闭datastore ,因为没有关闭方法。 每次调用servlet时,mongo中使用的连接数都会增长: { “current” : 113, “available” : 706, “totalCreated” : NumberLong(122) } > db.serverStatus().connections { “current” : 115, “available” : 704, “totalCreated” : NumberLong(124) } > db.serverStatus().connections { “current” : 116, “available” : […]

MongoDB / Morphia将技术ID保存为ObjectId,尽管它是Java中的String

我的MongoDB中有两种文档:客户端和代码。 每个代码都指一个客户端。 客户端必须由管理员显式存储,因此我必须将它们分开存储,并且不能将它们放入代码文档中。 code -> client 现在MongoDB / Morphia将客户端的技术ID保存为ObjectId,而代码引用技术ID为String类型的客户端。 我能够通过给定的客户端ID搜索代码,但在运行时我会收到一条错误消息,因为Morphia无法注入客户端。 我认为这是因为不同的id类型。 code { client.$id: String } client { _id: ObjectId } 任何想法如何解决这一问题? 例外 com.google.code.morphia.mapping.MappingException:无法为org.example.Code.client获取引用({“$ ref”:“clients”,“$ id”:“123456789abcdef”}) 在互联网上我发现了exception消息。 有人建议在模型中使用ObjectId而不是String,但我需要使用String。 这不是我自己的项目。 实体: @Entity(“codes”) public class Code implements Comparable { @Id private String id; @Reference private Client client; […] } @Entity(“clients”) public class Client { @Id private String […]

如何按内部数组大小对MongoDB查询结果进行排序?

我正在使用Morphia访问mongoDB。 我需要按内部数组的长度获取对象列表。 有没有人知道如何在不将所有集合转换为Java并将其排序的情况下完成它?

如何更喜欢在MongoDb中读取二进制文件

在副本集配置中使用mongodb时(1个仲裁器,1个主要,2个从属); 如何设置读取对辅助节点执行的首选项,并将主节点仅用于写入? 我正在和Morphia一起使用MongoDb 2.0.4。 我看到有一个slaveOk()方法,但我不确定它是如何工作的。 Morphia http://code.google.com/p/morphia/ 详细信息 My Mongo设置有以下选项: mongo.slaveOk(); mongo.setWriteConcern(WriteConcern.SAFE); 我试图使用以下(这可能是答案-btw): 数据存储区ds = getDatastore(); 查询 query = ds.find(MyEntity.class).field(“entityId”)。equal(entityId); query.queryNonPrimary(); //看起来等同于ReadPrefererence.secondary() MyEntity entity = query.get();

MongoDB的Java ORM开销是多少

使用Java ORM for MongoDB的开销是多少,或者我们在基本驱动程序级别读取或写入更好? 我们将根据我们的要求添加Mongo DB。 java有几种java ORM映射工具 -morphia -spring数据 – 其他人 Morphia上一版本在一年多前发布 但Spring数据得到了积极维护。 如果我即将开始,应该使用哪一个,

使用Morphia返回匹配的数组元素

我正在寻找一种方法,在提供一些conditions后过滤掉给定List of Object所有对象。 例如 A级 @Entity(value = “tbl_A”) public class A { private String notes; @Embedded private List sampleObject; ….getter and setter … } B级 @Embedded public class SampleObject { private boolean read; private boolean sentByBot; … getter and setter … } 现在,我只想收集已将sentByBot参数设置为true sentByBot 。 我使用以下方法: Query queryForA = datastore.find(A.class); queryForA.field(“sampleObject.sentByBot”).equal(false).retrievedFields(true, “sampleObject.sentByBot”); 上面的代码给出了包含sampleObject.sentByBot true和false的objects的完整列表。 我也尝试filter方法即 […]

DAO和dependency injection,建议?

这是我第一次使用DAO模式。 从我到目前为止所读到的 ,实现这种模式将帮助我从任何持久性实现中分离我的调用代码(控制器) – 正是我想要的; 也就是说,我不想被重新使用任何特定的数据库或第三方库。 我正在使用MongoDB和morphia(作为示例)创建一些测试代码(以TDD方式),并使用morphia提供的BasicDAO类。 据我所知,扩展BasicDAO需要一个接受Morphia和Mongo对象的构造函数; 这些是非常具体的(第三方)类型,我真的不想在DAO类本身之外浮动。 我怎样才能拥有更多可插拔架构? 我的意思是,我应该考虑如何配置我的应用程序以使用具有特定配置参数的特定DAO,在实际源外部?

morphia将一个字段名“ClassName”插入到mongodb中

我对mongodb和morphia很新,在开始使用之后,我意识到mongodb文档中有一个额外的部分,该记录包含一个字段名“ClassName”,其值为morphia映射的类。 { “_id” : ObjectId(“51e7a85e300441e5885316c0”), “className” : “models.User”, “imgurl” : “”, “uname” : “alex”} 这是正常的吗? 我觉得它违反了数据库中数据的完整性,无论如何都要绕过它吗?