Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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 使用morphia搜索对象数组_Java_Mongodb_Morphia - Fatal编程技术网

Java 使用morphia搜索对象数组

Java 使用morphia搜索对象数组,java,mongodb,morphia,Java,Mongodb,Morphia,我在计算morphia查询时遇到问题。 我有这样一个模式: { authorId:12345, comments:[ { userId:34567, name:"joe" }, { userId:98765, name:"sam" } ] } 我想使用morphia查找所有记录,其中searchId等于authorId或userId 我试过很多东西,但都不明白。例如 Query<Record> query = datastor

我在计算morphia查询时遇到问题。 我有这样一个模式:

{ authorId:12345,
  comments:[
     { userId:34567,
       name:"joe" },
     { userId:98765,
       name:"sam" }
  ]
}
我想使用morphia查找所有记录,其中searchId等于authorId或userId

我试过很多东西,但都不明白。例如

Query<Record> query = datastore.find(Record.class);
query.or(
      query.criteria(authorId).equal(searchId),
      query.criteria(comments).hasAnyOf(Collections.singletonList(searchId))
  );
Query Query=datastore.find(Record.class);
询问或(
query.criteria(authorId).equal(searchId),
query.criteria(comments).hasAnyOf(Collections.singletonList(searchId))
);
我也尝试过使用hasThisElement,但也不起作用。

如何执行此操作?

由于
注释
是一个嵌入字段,请使用查询嵌入文档的字段。mongoshell查询

db.records.find(
    {
        "$or": [
            { "authorId": searchId },
            { "comments.userId": searchId }
        ]
    }
)
这就是你需要的。Morphia等价物是

Datastore ds = ...
Query<Record> q = ds.createQuery(Record.class);
q.or(
    q.criteria("authorId").equal(searchId),
    q.criteria("comments.userId").equal(searchId)
);

//list
List<Record> entities = q.asList();
数据存储ds=。。。
Query q=ds.createQuery(Record.class);
q、 或(
q、 标准(“authorId”).equal(searchId),
q、 标准(“comments.userId”).equal(searchId)
);
//名单
列表实体=q.asList();

由于
注释
是一个嵌入字段,请使用查询嵌入文档的字段。mongoshell查询

db.records.find(
    {
        "$or": [
            { "authorId": searchId },
            { "comments.userId": searchId }
        ]
    }
)
这就是你需要的。Morphia等价物是

Datastore ds = ...
Query<Record> q = ds.createQuery(Record.class);
q.or(
    q.criteria("authorId").equal(searchId),
    q.criteria("comments.userId").equal(searchId)
);

//list
List<Record> entities = q.asList();
数据存储ds=。。。
Query q=ds.createQuery(Record.class);
q、 或(
q、 标准(“authorId”).equal(searchId),
q、 标准(“comments.userId”).equal(searchId)
);
//名单
列表实体=q.asList();