Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何在嵌入对象的数组中查询值?_Mongodb_Doctrine - Fatal编程技术网

Mongodb 如何在嵌入对象的数组中查询值?

Mongodb 如何在嵌入对象的数组中查询值?,mongodb,doctrine,Mongodb,Doctrine,我有一个包含以下对象的集合: { id => ... [queue] => Array ( [jobs] => Array ( [0] => Array ( [_id] => 308 [completedDate] => 1324649528

我有一个包含以下对象的集合:

{
id => ...
[queue] => Array
    (
        [jobs] => Array
            (
                [0] => Array
                    (
                        [_id] => 308
                        [completedDate] => 1324649528
                    )
            )
                [1] => Array
                    (
                        [_id] => 308
                        [completedDate] => 1324649512
                    )
            )
    )
}
因此,基本上我有一个包含对象的集合,每个对象都有一个嵌入式(
EmbedOne
)文档
队列
。 此
队列
文档还包含
作业
嵌入文档的集合(
@EmbedMany

我要查询作业已完成的文档:

db.Page.find({"queue.jobs.completedDate": { $ne : null} }).limit(10);
我使用doctrine2odm(1.0.0beta3)执行此查询

但它什么也没回来,我错过了什么

编辑:这是队列文档:

/** 
* @EmbeddedDocument 
*/
class Queue {

/** @Boolean */
private $locked = false;

/** @Timestamp */
private $lockedAt;

/** @EmbedMany(targetDocument="Cron\Model\Document\Job") */
private $jobs = array();

    //...setters & getters
}

使用下面的代码(2.0.2)在shell上工作

find({“queue.jobs.completedDate”:{$ne:null}).limit(10)


队列应该是散列,因为它具有“jobs”键。您的日期似乎没有正确存储。确保通过shell在数据库中显示的文档与您期望的一样。

我选择将日期存储为Int。队列对象是一个
@EmbeddedDocument
/** 
* @EmbeddedDocument 
*/
class Queue {

/** @Boolean */
private $locked = false;

/** @Timestamp */
private $lockedAt;

/** @EmbedMany(targetDocument="Cron\Model\Document\Job") */
private $jobs = array();

    //...setters & getters
}
db.Page.insert({
"queue": {
        "jobs": [
        {
            "_id": ObjectId(),
            "completedDate": ISODate()
        },
        {
            "_id": ObjectId(),
            "completedDate": ISODate()
        }
    ]}
})
{ "_id" : ObjectId("4ef49ebe093f0426a41ec640"),
    "queue" : {
        "jobs" : [ 
         { 
            "_id" : ObjectId("4ef49ebe093f0426a41ec63e"),
            "completedDate" : ISODate("2011-12-23T15:31:10.881Z")
         }, 
         {
            "_id" : ObjectId("4ef49ebe093f0426a41ec63f"),
            "completedDate" : ISODate("2011-12-23T15:31:10.881Z")
         }
         ] 
    }
}