簡體   English   中英

如果使用pymongo在mongodb中不存在數組,如何返回空元素數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM