mongodb:在查询中使用$where时意外标记非法
在我的收藏中,我有一个叫做anchorDates的字段mongodb:在查询中使用$where时意外标记非法,mongodb,Mongodb,在我的收藏中,我有一个叫做anchorDates的字段 { anchorDates: { "12345:TS" : "2015-07-16T18:10:15+00:00" } } 我尝试了一个使用$where的查询: db.members.find({$where:function(){return this[anchorDates][12345:TS]=="2015-07-16T18:49:04+00:00"}}) 它给出了一个错误 Unexpected t
{
anchorDates: {
"12345:TS" : "2015-07-16T18:10:15+00:00"
}
}
我尝试了一个使用$where的查询:
db.members.find({$where:function(){return this[anchorDates][12345:TS]=="2015-07-16T18:49:04+00:00"}})
它给出了一个错误
Unexpected token ILLEGAL
我也试过了
db.members.find({$where:function(){return this.anchorDates.12345:TS=="2015-07-16T18:49:04+00:00"}})
得到同样的错误,我认为这是因为冒号在12345和TS之间,但不知道如何查询这个。谢谢 如果使用括号,则需要引用字符串:
this['anchorDates']['12345:TS']
或:
在你的例子中,哪一个是:
db.members.find({$where:function(){return this["anchorDates"]["12345:TS"]=="2015-07-16T18:49:04+00:00"}})
但如果可以,您应该使用更直接的查询:
db.members.find({"anchorDates.12345:TS":"2015-07-16T18:49:04+00:00"})
如果其他查询操作符都不起作用,那么使用
$where
是最后的选择。查看以了解更多信息。请尝试带引号的“12345:TS”。db.members.find({$where:function(){return this[anchorDates]['12345:TS']==“2015-07-16T18:49:04+00:00”}}})@Makoton我试过了,但有错误“$err”:“ReferenceError:anchorDates没有定义\n,我应该使用function(){return this.anchorDates['12345:TS']}来代替,谢谢你!第一个似乎不适用于错误:$err:ReferenceError:anchorDates未定义,但第二个可以正常工作。是的,在这个简单的例子中,我不应该使用$where,但是我有很多东西要添加到我的代码中,所以我必须使用,非常感谢@user2810081很高兴它能为您工作,尽管我不确定第一个错误是如何产生的,因为它只是一个字符串而不是一个变量。当程序试图引用未定义的值时,会出现此错误。
db.members.find({"anchorDates.12345:TS":"2015-07-16T18:49:04+00:00"})