按字符串列表中的元素查询 MongoDB 与吗啡
Query MongoDB with morphia by element on String list
这是文档格式:
{
"_id" : ObjectId("123")
"types" : [ "PHONE", "ADDRESS" ]
},
{
"_id" : ObjectId("345")
"types" : [ "PHONE" ]
},
{
"_id" : ObjectId("567")
"types" : [ "PHONE", "NAME" ]
}
这是查找包含特定类型的元素的查询:
public List<MyCollection> findByType(Type type) {
return getDatastore().createQuery(MyCollection.class)
.field("types").hasThisElement(type.toString())
.asList();
}
使用这段代码,我得到了这个错误:
com.mongodb.MongoException: Can't canonicalize query: BadValue $elemMatch needs an Object
我尝试使用 hasThisOne
方法,但总是 returns 一个空数组。
我该如何查询?
为什么要使用 type.toString()
?
我假设您的实体中有一个 List<Type> types
,对吧?那么查询也应该使用枚举而不是它的字符串表示。
你或许可以使用:
getDatastore().createQuery(MyCollection.class)
.field("types").equal(type).asList();
是的,即使是数组。
这是文档格式:
{
"_id" : ObjectId("123")
"types" : [ "PHONE", "ADDRESS" ]
},
{
"_id" : ObjectId("345")
"types" : [ "PHONE" ]
},
{
"_id" : ObjectId("567")
"types" : [ "PHONE", "NAME" ]
}
这是查找包含特定类型的元素的查询:
public List<MyCollection> findByType(Type type) {
return getDatastore().createQuery(MyCollection.class)
.field("types").hasThisElement(type.toString())
.asList();
}
使用这段代码,我得到了这个错误:
com.mongodb.MongoException: Can't canonicalize query: BadValue $elemMatch needs an Object
我尝试使用 hasThisOne
方法,但总是 returns 一个空数组。
我该如何查询?
为什么要使用 type.toString()
?
我假设您的实体中有一个 List<Type> types
,对吧?那么查询也应该使用枚举而不是它的字符串表示。
你或许可以使用:
getDatastore().createQuery(MyCollection.class)
.field("types").equal(type).asList();
是的,即使是数组。