【发布时间】:2018-07-05 17:12:24
【问题描述】:
我正在尝试运行此查询
{campaignId: ObjectId('5a6b11e806f0252e1408e379'),'options.path': 'NT'}
它在 Compass 中完美运行,但是当我尝试添加 MongoRepository 界面时,如下所示:
@Query("{ 'campaignId': ObjectId(?0), 'options.path': ?1})")
public Dialog findByCampaignIdAndPath(String campaignId, String path);
我得到了这个例外:
嵌套异常是 com.mongodb.util.JSONParseException:
@Query("{ 'campaignId': ObjectId(?0), 'options.path': ?1})")
使用spring-boot版本1.5.9.RELEASE,不是buggyversion
EDIT1:指定了确切的 id 名称,如 cmets 中所建议的那样
EDIT2:这是我的 Dialog 类
@Getter
@Setter
@Document(collection = "Dialog")
public class Dialog {
@Id
public String id;
private DBRef campaignId;
private Message message;
private List<Option> options;
public Dialog(final Message message, final List<Option> options) {
this.message = message;
this.options = options;
}
}
【问题讨论】:
-
如果您要指定 id,那么需要指定任何其他查询参数吗?是不是多余的
-
你是对的,实际上让我重新表述它不是 id,它应该是另一个集合中文档的手动 ref id
-
显示 Dialog 类的代码
标签: mongodb spring-boot mongodb-query spring-data