【发布时间】:2014-01-24 01:21:36
【问题描述】:
我对 Java 很陌生。我对 mongoDB 很陌生。
我有一个看起来像这样的集合:
{
"_id" : "1234",
"name" : "bill",
"products" : [
{
"fooType" : "bar",
.....
},
{
"fooType" : "oof",
.....
}
],
"status" : "Truncated"
},
{...}
我正在尝试实现按 fooType 进行搜索的搜索功能。我能够使用标准 mongodb 语法创建一个工作查询,但无法弄清楚如何使用 morphia 来实现。
一个有效的 mongodb 查询:
db.Clients.find({products: {$elemMatch: {fooType: "bar"}}})
我尝试过的一些(截断的)代码没有成功:
DatastoreImpl ds;
q = ds.createQuery(Clients.class).field("products").hasThisElement("fooType");
显然这不起作用,因为它需要一个对象。我似乎无法理解如何使用 hasThisElement,我什至不确定这是否是解决此问题的最佳方法。
【问题讨论】:
-
你试过
ds.createQuery(Clients.class).field("products.fooType").hasThisElement("bar")吗? -
同样的错误:
invalid parameter: expected an object ($elemMatch)