Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring数据mongo使用或查询中_Java_Spring_Mongodb_Spring Data - Fatal编程技术网

Java Spring数据mongo使用或查询中

Java Spring数据mongo使用或查询中,java,spring,mongodb,spring-data,Java,Spring,Mongodb,Spring Data,让我们看看是否有人能帮上忙 我想使用Spring数据mongodb的存储库,我想使用查询注释来过滤按值A=10或A=20查找的数据 @Query("{A: 10, A:20}") findById(int id); 很明显,“试着做一个AND,我需要一个OR 有什么想法吗?你可以用接线员。我不知道Java Spring,但根据您的示例,Query部分应该如下所示: @Query("{A: {$in: [10, 20]}}") 您可以使用运算符来完成此操作。我不知道Java Sprin

让我们看看是否有人能帮上忙

我想使用Spring数据mongodb的存储库,我想使用查询注释来过滤按值A=10或A=20查找的数据

  @Query("{A: 10, A:20}")
  findById(int id);
很明显,“试着做一个AND,我需要一个OR

有什么想法吗?

你可以用接线员。我不知道Java Spring,但根据您的示例,
Query
部分应该如下所示:

@Query("{A: {$in: [10, 20]}}")
您可以使用运算符来完成此操作。我不知道Java Spring,但根据您的示例,
Query
部分应该如下所示:

@Query("{A: {$in: [10, 20]}}")

我想这可能有用

@Query("{'$or':[ {'A':10}, {'B':20} ] }")

我想这可能有用

@Query("{'$or':[ {'A':10}, {'B':20} ] }")

您可以使用Spring的查询结构:

Query query = new Query();
query.addCriteria(Criteria.where("id").is(10).orOperator(Criteria.where("id").is(20));
this.client.findOne(query, clazz);

您可以使用Spring的查询结构:

Query query = new Query();
query.addCriteria(Criteria.where("id").is(10).orOperator(Criteria.where("id").is(20));
this.client.findOne(query, clazz);

使用Spring的基本查询:

DBObject queryCondition = new BasicDBObject();        
BasicDBList values = new BasicDBList();
values.add(new BasicDBObject("A", 10));
values.add(new BasicDBObject("B", 20));
queryCondition.put("$or", values);
Query query = new BasicQuery(queryCondition);
mongoTemplate.find(query, clazz);

使用Spring的基本查询:

DBObject queryCondition = new BasicDBObject();        
BasicDBList values = new BasicDBList();
values.add(new BasicDBObject("A", 10));
values.add(new BasicDBObject("B", 20));
queryCondition.put("$or", values);
Query query = new BasicQuery(queryCondition);
mongoTemplate.find(query, clazz);

或者如果您使用的是标准API

Criteria criteria = new Criteria();
criteria.orOperator(Criteria.where("A").is(10),Criteria.where("B").is(20));
Query query = new Query(criteria);

mongoOps.find(query, <Yourclass>.class, "collectionName");
标准=新标准();
标准。或运营商(标准。其中(“A”)为(10),标准。其中(“B”)为(20));
查询=新查询(条件);
find(查询,.class,“collectionName”);

或者如果您使用的是标准API

Criteria criteria = new Criteria();
criteria.orOperator(Criteria.where("A").is(10),Criteria.where("B").is(20));
Query query = new Query(criteria);

mongoOps.find(query, <Yourclass>.class, "collectionName");
标准=新标准();
标准。或运营商(标准。其中(“A”)为(10),标准。其中(“B”)为(20));
查询=新查询(条件);
find(查询,.class,“collectionName”);

您可以在Spring Java中使用$in操作符:


Criteria=Criteria.where(“字段”).in(选项列表)

您可以在Spring Java中使用$in操作符:


Criteria=Criteria.where(“字段”).in(选项列表)

除了helloJava answer,如果您已经有了其他条件的查询,您可以直接在query.addCriteria上添加或操作,如下所示

query.addCriteria(new Criteria().orOperator(Criteria.where("fieldA").is(value),
                Criteria.where("fieldB").is(value2)));

除了helloJava answer,如果您已经有了其他条件的查询,您可以直接在query.addCriteria上添加或操作,如下所示

query.addCriteria(new Criteria().orOperator(Criteria.where("fieldA").is(value),
                Criteria.where("fieldB").is(value2)));

您可以像这样使用Spring Data MongoDB:

Query query = new Query();
query.addCriteria(
    Criteria.where("").orOperator(
        Criteria.where("A").is(10),
        Criteria.where("B").is(20)
    )
);

mongoTemplate.find(query, YourClazz.class, "CollectionName");

您可以像这样使用Spring Data MongoDB:

Query query = new Query();
query.addCriteria(
    Criteria.where("").orOperator(
        Criteria.where("A").is(10),
        Criteria.where("B").is(20)
    )
);

mongoTemplate.find(query, YourClazz.class, "CollectionName");

谢谢,但该注释结构在Spring数据存储库中不起作用,其他人有其他想法吗?谢谢,但该注释结构在Spring数据存储库中不起作用,其他人有其他想法吗?它不起作用,因为使用上面的方法,id已经固定,并且在该基本子句中,or将被应用。但是OP希望有一个直接的第一级或子句。我们可以在没有更多条件的情况下应用Or运算符吗?它不起作用,因为使用上面的方法,id已经固定,并且在该基本子句中Or将被应用。但是OP想要有一个直接的第一级或子句。我们可以用更多的条件应用或运算符吗?@FakeUser@Query({$Or:[{'type':?0},{'key':?1},{'username':?2}])这是正确的查询吗?@mahendrakawde该查询通过
type
key
username
@FakeUser@Query({$Or:['type':?0})进行搜索是正确的,{'key':?1},{'username':?2}]})这是正确的查询吗?@mahendrakawde该查询通过
类型
用户名
进行搜索是正确的。请注意,每个人,除了创建的对象较少外,如果您想从or运算符中排除空条件,此构造也很方便。无法解析构造函数的基本查询(com.mongodb.DBObject)'请注意,如果要从OR运算符中排除空条件,除了创建较少的对象外,此构造也很方便。无法解析构造函数'BasicQuery(com.mongodb.DBObject)'