首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用日期范围和另一个条件进行MongoDB搜索

使用日期范围和另一个条件进行MongoDB搜索
EN

Stack Overflow用户
提问于 2012-11-13 06:00:47
回答 1查看 10.8K关注 0票数 4

我试图在mongodb中查询具有某个日期范围内的' date‘属性的文档,这就是我要做的。

Q1。

代码语言:javascript
复制
$searchCriteria = array('$and' => 
        array(
            'date' => array('$gt' => $start, '$lte' => $end),
            'lid' => $lid
            ));

Q2。

代码语言:javascript
复制
$results = $collection->find($searchCriteria);

它不会返回任何东西,但是如果我单独运行每个搜索条件,它们都可以工作。

Q3。

代码语言:javascript
复制
$searchCriteria = array(
            'date' => array('$gt' => $start, '$lte' => $end)
            );

这是可行的,它将返回与此日期范围匹配的文档

代码语言:javascript
复制
    $searchCriteria = array(
            'lid' => $lid
            );

这也行得通,返回的所有盖子都等于我所要求的。

但当我想要将这些条件转换为条件时,它不起作用,以下是搜索条件Q1的var_dump:

代码语言:javascript
复制
array(1) { '$and' => array(2) { 'date' => array(2) { '$gt' => string(10) "2010-11-10" '$lte' => string(10) "2010-11-12" } 'lid' => int(6209) } }

下面是同一查询的json_encoded输出:

代码语言:javascript
复制
{"$and":{"date":{"$gt":"2010-11-10","$lte":"2010-11-12"},"lid":6209}}

在mongo shell中运行查询的json输出会导致错误

代码语言:javascript
复制
db.largedaily.find({"$and":{"date":{"$gt":"2010-01-01","$lte":"2010-01-02"},"lid":6209}});

error: { "$err" : "$and expression must be a nonempty array", "code" : 14816 }

我做错了什么?我想我设置的searchCriteria不正确。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-13 06:07:17

A1/A2:您不需要这样的$and,而是使用:

代码语言:javascript
复制
$searchCriteria = array(
    'date' => array('$gt' => $start, '$lte' => $end),
    'lid' => $lid
);

在shell中,这个{"$and":{"date":{"$gt":"2010-11-10","$lte":"2010-11-12"},"lid":6209}}是不正确的,因为您需要使用一个数组(带[]),而不是一个对象( {})。正确的答案是:

代码语言:javascript
复制
{"$and":[ {"date":{"$gt":"2010-11-10","$lte":"2010-11-12"} }, {"lid":6209} ]}

但是你不需要$and,你可以直接使用:

代码语言:javascript
复制
db.largedaily.find( {"date":{ "$gt":"2010-11-10","$lte":"2010-11-12"}, {"lid":6209 } );
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13352302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档