![](/img/trans.png)
[英]Querying by “_id” doesn't return file in MongoDB in Python, using PyMongo
[英]How to return a array of null elements if array doesn't exist in mongodb using pymongo
嗨,大家好,我有這樣的傑森
{
"_id":"15b9367568b61a0a2891feef",
"date":1492826657037,
"sourceId":123",
"sessionCreationDate":1492826657037,
"sessionId":"15b9367568dcd6dcd36f7615",
"actions":[
{
"flag":"STARTED_SCROLL"
},
{
"flag":"ARTICLE_MIDDLE"
}
],
"dateClose":1492826915066
}
對於某些id來說,“ actions”數組也可能不存在,所以這樣的事情是可能的
{
"_id":"15b9367568b61a0a2891feef",
"date":1492826657037,
"sourceId":123,
"sessionCreationDate":1492826657037,
"sessionId":"15b9367568dcd6dcd36f7615"
}
我當前使用pymongo的查詢是
db['visits'].aggregate\
(
[
{
"$match":
{
"sourceId":
{
"$exists": True,
"$ne": None
},
"date":
{
"$gt":time.time() * 1000 - (1*60*60*1000)
}
}
},
{
'$project':
{
'sourceId':1,
'actions.flag':
{
'$ifNull': ['$actions.flag', None]
}
}
}
]
)
這會導致動作作為字典actions': {u'flag': None}
如何將其轉換為字典列表,例如[actions': {u'flag': [None]}]
? 因為我想訪問flag變量以插入到數據庫中,但是在for循環中調用['actions'][0]['flag']
不起作用,因為action並不是從mongo查詢返回的那些action項的列表它打破了
將其放在$ project階段:
{
'$project':
{
'sourceId': 1,
'actions.flag':
{
'$ifNull': ['$actions.flag',
[None, None]]
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.