我在mongodb中有文件,我可以使用mongoid访问,如下所示:
{
"first_name": "Clarke",
"last_name": "Kent",
"vault_info": {
"container": "names",
"created_at": "2013-12-09T23:18:07.963Z",
"updated_at": "2013-12-09T23:18:07.963Z",
"vault_id": "4dc08baa97"
}
}
我希望能够使用for_js方法查询它:
Model.for_js('this.vault_info.vault_id=="5088de6f12"')
如果数据库中有单个文档,则此方法有效。如果有多个,则会出现此错误:
"TypeError: Cannot read property 'vault_id' of undefined near '==\"5088de6f12\"' "
任何帮助都将不胜感激。
罗伯特
答案 0 :(得分:0)
您添加的新文档看起来没有vault_info
属性。这意味着this.vault_info
评估为undefined
,您无法访问vault_id
的任何属性(包括undefined
)。
如果您不必使用for_js
方法,只需使用where
方法,如下所示:
Model.where('vault_info.vault_id' => '5088de6f12')
Mongo智能地过滤掉所有缺少vault_info属性的文档,因此您不会在访问undefined
的属性时遇到任何错误。 JavaScript并没有帮助你,所以如果你绝对必须使用for_js
方法,你将不得不检查每一步。这看起来像是:
Model.for_js('this.vault_info && this.vault_info.vault_id=="5088de6f12"')
我建议您使用where
方法。您发送给MongoDB的JavaScript越少越好。