使用弹簧数据获取键值的mongodb查询

时间:2016-04-22 12:16:48

标签: java spring mongodb spring-boot spring-data-mongodb

我已经启动了一个带有mongodb和spring boot以及spring JPA数据的项目,我意识到我无法将我的数据模型映射到实体并对其进行简单的查询,所以我有两个问题,

我的数据模型就是这样(仅适用于一个集合)

onOpening

我的实体是

$('.ui.accordion').accordion('open', getCookie('acordionIndex') * 1).accordion({
        onOpening: function (item) {
            setCookie('acordionIndex', this.index('.content') - 1, 2)
        }
});
  1. 我可以像我一样(地图)
  2. 在我的mongodb集合中映射属性属性
  3. 如何查询查找属性?

    我可以这样做吗? { name: "Name", lastName: "Last Name", attributes: { age: 25 eye: { color: "RED", size: "BIG" } } }

2 个答案:

答案 0 :(得分:2)

  

我可以像我一样(地图)

在我的mongodb集合中映射属性属性

是的,您可以,并且它可能对“dynamic”或“partly defined”架构有用(虽然很棘手)。

如果您事先知道自己的架构,我强烈建议您在域对象中显示它。看看here

  

如何查询查找属性?

如果您不使用动态架构,则Spring Data MongoDB Reference Documentation会清楚地解释嵌套属性的属性遍历。

如果您使用动态架构,则最有可能使用MongoDB JSON based query methods

答案 1 :(得分:2)

今天我在Spring Mongodb中遇到了Map查询的问题,而且由于这个问题弹出谷歌中的第一个,我将提供另一个答案。

由于其他答案引用了文档,并且该文档没有很多信息,我将举例说明动态模式的@Query注释有多好:

@Query(value = "{'attributes.age' : ?0}")
List<User> findAllByAttributesAge(int age);

另外,您也可以查询眼睛颜色:

@Query(value = "{'attributes.eye.color' : ?0}")
List<User> findAllByAttributesEyeColor(String color);

正如文档所说的其他答案,您可以过滤结果,只接收您喜欢的文档部分:

// It will return the users with only name and last name
@Query(value = "{'attributes.age' : ?0}", fields = "{ name : 1, lastName : 1 }")
List<User> findAllByAttributesAge(int age);