使用stream
调用mongotemplate
方法时发现了一个错误
mongo中“订单”集合下的数据
{ "_id" : "id1", "merchant_id" : "1234", "merchant" : { "name" : "mer_name", "id" : "1234" } }
我的Pojos
public class Order {
public String merchant_id;
public Merchant merchant;
}
public class Merchant {
public String id;
public String name;
}
当我们使用Order.class
调用流方法时,没有记录将被返回
BasicQuery basicQuery = new BasicQuery("{merchant_id:\"1234\"}");
return mongoTemplate.stream(basicQuery, Order.class, "order");
来自Mongo日志(查询已更改)
D QUERY --- query: { merchant._id: "1234" } sort: {} projection: {}, planSummary: COLLSCAN
很明显,查询是由库更改的,商家后有DOT(。)added
。因此,搜索是在NESTED(商家)文档上完成的。
如果将Entity更改为Map.class
,将返回(查询不会更改)数据
调试后,我发现它取决于
MetadataBackedField.path
赞赏所有解决方法