我将mongodb与springboot结合使用,并且我有一个带有自定义
_id
,如是(在Java中):
@Document(collection="myEntity")
public class MyEntity {
@Id
private MyId id;
private String field1;
// getters, setters
public static class MyId {
private long field1;
private String field2;
private String field3;
// getters, setters
}
}
在mongo存储库中,我有一个
findById(MyId)
save(MyEntity)
MyId#id
字段被包装在
NumberLong
.
db.myEntity.find()
将返回一个实体列表,如
{
"_id": {
"field1": NumberLong("1"),
"field2": "a",
"field3": "b"
},
"field1": "aa"
}
另一方面,在启用mongodb查询的调试日志记录后
findById
方法显示
使用查询完成
{ "_id": { "field1": "$numberLong": "1", "field2": "a", "field3": "b" }, "field1": "aa" }
在mongo shell中:
db.myEntity.find({ "_id": { "field1": { "$numberLong": "1" }, "field2": "a", "field3": "b" }, "field1": "aa" })
没有结果。
跑步
db.myEntity.find({ "_id": { "field1": new NumberLong("1"), "field2": "a", "field3": "b" }, "field1": "aa" })
返回结果。
我怎样才能解决这个问题
query方法有效(返回给定id的预期结果)?