我有一个使用Morphia映射的ObjectId列表.在java中,映射看起来像这样:
public class Log {
@Indexed
public List<ObjectId> companyIds;
....
}
Run Code Online (Sandbox Code Playgroud)
但是,在Mongo shell中,当我使用$ elemMatch进行搜索时,它会抱怨无效类型.
> db.Log.find({ "companyIds" : { "$elemMatch" : ObjectId("5059e90d0364d02be740417a")}})
error: {
"$err" : "invalid parameter: expected an object ($elemMatch)",
"code" : 10065
}
Run Code Online (Sandbox Code Playgroud)
在使用带有ObjectId的$ elemMatch时,还有什么需要做的吗?
谢谢
jjm*_*jjm 10
您不需要使用它$elemMatch来执行此操作.您可以运行查询
{ "companyIds" : ObjectId("...") }
Run Code Online (Sandbox Code Playgroud)
它将查找companyIds字段包含给定objectId的所有对象.
根据文档,$elemMatch只有当您尝试匹配数组元素上的多个字段时才有必要.它之所以说"预期一个对象"是因为它的参数$elemMatch需要一个完整的mongo查询(例如,你可以传递给find它的东西).
| 归档时间: |
|
| 查看次数: |
4048 次 |
| 最近记录: |