1

集合包含这样的数据

    {
        '_id': ObjectId("527cf8ae3ad5a461caf925fc"),
        'name': {
            'first': 'John',
            'last': 'Backus'
        }
    }

我想通过 $where 查找名字“John”的记录

    $m = new MongoClient();
    $db = $m->selectDB('school');
    $collection = new MongoCollection($db, 'student');
    $js = "function() {
        return this.first.name == 'John';
    }";
    $cursor = $collection->find(array('$where' => $js));

我收到异常捕获异常:localhost:27017:TypeError:无法读取'this.name.first =='Jo'附近未定义的属性'first'

我只想用 $where 搜索。

4

2 回答 2

0

这是一个非常奇怪的场景。如果你能找到它,你为什么要这样做

db.collection.find({'name.first' : 'John'})

无论如何,错误在于first.name并且您的集合有一个架构name.first

$js = "function() {
    return this.name.first == 'John';
}";

基本上,它试图告诉您“我正在查看字段名称并且它是未定义的,然后当我首先检查这个未定义的字段时,我崩溃了”。

于 2013-11-11T05:55:02.170 回答
0

这对我有用:

   $m = new MongoClient();
   $db = $m->school;
   $collection = $db->student;
   $cursor = $collection->find( array('name.first' => 'John' ));

   foreach ($cursor as $document) {
      var_dump($document);
   }
于 2016-06-14T12:37:31.383 回答