0
我想创建mongodb在春季数据可选查询,但获取错误。任何人都可以请帮我解决这个问题。需要帮助mongodb查询之间可选参数
请注意此查询是日期范围
之间下面是查询
@Query(value = "{ $and: [
{$or : [ { $where: '?0 == null' } , { createdDate : {$gt : ?0} }]},
{$or : [ { $where: '?1 == null' } , { createdDate : {$lt : ?1} }]}
] }")
下面是生成的查询
{ "$and" : [
{ "$or" : [ { "$where" : "{ \"$date\" : \"2016-02-28T18:30:00.000Z\"} == null"} ,
{ "createdDate" : { "$gt" : { "$date" : "2016-02-28T18:30:00.000Z"}}}]} ,
{ "$or" : [ { "$where" : "{ \"$date\" : \"2016-03-11T18:30:00.000Z\"} == null"} ,
{ "createdDate" : { "$lt" : { "$date" : "2016-03-11T18:30:00.000Z"}}}]}
]}
得到以下错误
org.springframework.data.mongodb.UncategorizedMongoDbException: { "serverUsed" : "localhost:27017" , "waitedMS" : 0 , "ok" : 0.0 , "errmsg" : "Failed to call method" , "code" : 1}; nested exception is com.mongodb.CommandFailureException: { "serverUsed" : "localhost:27017" , "waitedMS" : 0 , "ok" : 0.0 , "errmsg" : "Failed to call method" , "code" : 1}
很抱歉,但你真的失去了我这里,而且大多因为你试图在正确的语法是如此不正确,很难确定你的意思。 ['$ where']是一个接受JavaScript函数以在文档选择标准中解析为“true/false”的参数。这不是你在做什么。也许在再次询问文档之前仔细看看文档 –
也不是这种'@ Query'用法在spring-mongo中的粉丝。我认为这只是迎合了那些在休眠中使用类似签名属性的人,但并不知道他们的意思。具有“对象”参数的9/10情况是,您最好只是检查通常比在对象的方法调用中尝试合理化命名参数。 –
如果上述查询令人困惑,请致歉。我正在尝试编写查询以获取日期范围内的记录。如果只有startdate存在,那么我需要所有在startdate之后创建的记录,并且如果只有todate礼物,那么我只需要所有在todate之前创建的记录。如果两者都失踪,那么我需要所有的记录。这是我想要做的。 – OneTwo