Collection包含这样的数据
{
'_id': ObjectId("527cf8ae3ad5a461caf925fc"),
'name': {
'first': 'John',
'last': 'Backus'
}
}
我想找到第一个名字'John'到$ where
的记录 $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。
答案 0 :(得分:0)
这是一个非常奇怪的场景。如果你能用
找到它,你为什么要这样做呢?db.collection.find({'name.first' : 'John'})
无论如何,错误发生在first.name
,您的收藏集中有一个架构name.first
$js = "function() {
return this.name.first == 'John';
}";
基本上它试图告诉你“我正在查看字段名称并且它是未定义的,然后当我检查这个未定义的字段时,我崩溃了”。
答案 1 :(得分:0)
这对我有用:
$m = new MongoClient();
$db = $m->school;
$collection = $db->student;
$cursor = $collection->find( array('name.first' => 'John' ));
foreach ($cursor as $document) {
var_dump($document);
}