用吗啡搜索一组对象
search an array of objects with morphia
我在计算吗啡查询时遇到问题。
我有这样的架构:
{ authorId:12345,
comments:[
{ userId:34567,
name:"joe" },
{ userId:98765,
name:"sam" }
]
}
我想查找所有使用吗啡的记录,其中 searchId 等于 authorId 或 userId。
我已经尝试了很多东西,但我不明白。例如
Query<Record> query = datastore.find(Record.class);
query.or(
query.criteria(authorId).equal(searchId),
query.criteria(comments).hasAnyOf(Collections.singletonList(searchId))
);
我也试过使用 hasThisElement,但也没用。
我该怎么做?
因为comments
是嵌入字段,使用dot notation查询嵌入文档的字段。 mongo shell 查询
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();
我在计算吗啡查询时遇到问题。 我有这样的架构:
{ authorId:12345,
comments:[
{ userId:34567,
name:"joe" },
{ userId:98765,
name:"sam" }
]
}
我想查找所有使用吗啡的记录,其中 searchId 等于 authorId 或 userId。
我已经尝试了很多东西,但我不明白。例如
Query<Record> query = datastore.find(Record.class);
query.or(
query.criteria(authorId).equal(searchId),
query.criteria(comments).hasAnyOf(Collections.singletonList(searchId))
);
我也试过使用 hasThisElement,但也没用。
我该怎么做?
因为comments
是嵌入字段,使用dot notation查询嵌入文档的字段。 mongo shell 查询
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();