假设我有这个文件:
{
"_id" : ObjectId("4e2f2af16f1e7e4c2000000a"),
"location" : {
"geometry" : [
[ 123, 23.45321 ],
[ 124.55632, 43.256 ]
]
},
"advertisers" : {
"created_at" : ISODate("2011-07-26T21:02:19Z"),
"category" : "Infinity Pro Spin Air Brush",
"updated_at" : ISODate("2011-07-26T21:02:19Z"),
"lowered_name" : "conair",
"twitter_name" : "",
"facebook_page_url" : "",
"website_url" : "",
"user_ids" : [ ],
"blog_url" : ""
}
}
我只想在广告客户内部获得具体价值。让我们说降低了名字。
查询,我可以使用这种语法:
db.advertisers.find({"advertisers.lowered_name" : "conair"})
但是当然它会返回等于查询的文档。我怎样才能获得具体的价值" conair"。例如,在print语句中使用它:使用此类代码将导致错误:
for cursor in results:
print(cursor["advertisers.lowered_name"])
如何做到这一点?我试着搜索,但是我可能在某个地方错过了它?
答案 0 :(得分:3)
您无法使用Pymongo使用“点符号”访问嵌入字段,因为Pymongo使用字典来表示文档。
for item in db.advertisers.find({"advertisers.lowered_name" : "conair"}, {"advertisers.lowered_name": 1}):
print(item["advertisers"]["lowered_name"])
您也可以使用.distinct
方法,但请注意,这只会返回唯一的“reduced_name”列表
for item in db.advertisers.distinct("advertisers.lowered_name", {"advertisers.lowered_name" : "conair"}):
print(item)