java - 使用 elem 对子文档数组进行 Morphia 查询

标签 java mongodb morphia

我在 mongodb 集合“Contact”中有以下文档结构。有一个名为“numbers”的子文档数组:

{
    "name" : "Bill",
    "numbers" : [
        {
            "type" : "home",
            "number" : "01234",
        },
        {
            "type" : "business",
            "number" : "99099"
        },
        {
            "type" : "fax",
            "number" : "77777"
        }
    ]
}

当我只想查询“家庭”和“企业”号码时,我可以在 mongodb-shell 中执行以下操作:

db.Contact.find({ numbers: { $elemMatch: { 
        type : { $in : ["home", "business"]}, 
        number: { $regex : "^012" }
}}});

但是如何在吗啡中做到这一点呢?有什么办法吗?

我了解吗啡支持“$elemMatch”。所以我可以做这样的事情:

query.filter("numbers elem", ???);

但是我到底如何为子文档添加组合查询呢?

最佳答案

为时已晚,但也许其他人可以方便地找到它。

我找到了解决方案 https://groups.google.com/forum/#!topic/morphia/FlEjBoSqkhg

query.filter("numbers elem", 
BasicDBObjectBuilder.start()
.push("type").add("$in", new String[]{"home", "business"}).pop()
.push("number").add("$regex", "^012").pop().get());

关于java - 使用 elem 对子文档数组进行 Morphia 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18510593/

相关文章:

java - 如何配置 persistence.xml 以指向 MongoDB

java - 如何使用具体的调度程序启动 @Scheduled 方法?

java - 何时在 JMS 中使用同步和异步消息?

javascript - 如果所有子文档都通过标准, Mongoose 只获取那些文档

python - 如何在 Python 中创建一组在 Mongodb 中唯一的字段组合

java - Morphia 在插入具有预定义 ID 的对象时停止

java - 在JTable中设置不同颜色的行?

java - JasperReports JavaBeans 列表中的 JRBeanCollectionDataSource

node.js - MongoDB:推送到嵌套数组或更新现有数组元素

java - 使用 Spring 作为 Morphia 的对象工厂