在我的收藏中,我有一个名为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 token ILLEGAL
我也试过
db.members.find({$where:function(){return this.anchorDates.12345:TS=="2015-07-16T18:49:04+00:00"}})
并得到相同的错误,我认为它是因为12345和TS之间的冒号,但不知道如何查询这个。谢谢!
答案 0 :(得分:2)
如果使用括号,则需要引用字符串:
this['anchorDates']['12345:TS']
OR:
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
是最后的手段。查看documentation了解详情。