Python检查MongoDB字段是否存在

时间:2018-04-19 05:02:43

标签: mongodb python-3.x

我有两个集合,一个是网站,它存储的信息如下:

{
    "_id" : ObjectId("5ac5efd6a37efa4c0e28f5aa"),
    "main_id" : 3,
    "status" : "",
    "website" : "http://test.com",
    "last_access_time" : "2018-04-16 17:49:03",

    "links" : [ 
        {
            "link_id" : "test-1",
            "link" : "test1.html"
        }, 
        {
            "link_id" : "test-2",
            "link" : "test.html"
        }
    ]
}

另一个是 website_info ,其中我想要商店信息,如:

    {
    "_id" : ObjectId("5ad72ddecf45b60dffcbf9f2"),
    "main_id" : 3,
    "last_access_time" : "2018-04-18 15:37:02",
    "test-1" : {
        "no_of_links" : 55,
        "links_2" : [ 
            {
                "link" : "/home",
                "link_id" : "secnd-1",
            }, 
            {
                "link" : "/login",
                "link_id" : "secnd-2",
            }, 
            {
                "link" : "/services",
                "link_id" : "secnd-3",
            }
        ]
    },
    "test-2" : {
        "no_of_links" : 55,
        "links_2" : [ 
            {
                "link" : "/home",
                "link_id" : "secnd-1",
            }, 
            {
                "link" : "/login",
                "link_id" : "secnd-2",
            }, 
            {
                "link" : "/services",
                "link_id" : "secnd-3",
            }
        ]
    }

}

我正在使用Python3和mongoDB。 在这里,我想查看" link_id"等字段。这是" test-1"在main_id = 3的 website_info 中是否存在。如果它存在我会更新相同,如果不存在我想插入新的记录集。 问题是如何检查字段" test-1" ( website_info 集合中的网站集合的值)是否存在。 感谢帮助。

1 个答案:

答案 0 :(得分:0)

在我的例子中,link_id在website_info集合中是唯一的。所以不需要检查main_id,只检查link_id解决了我的问题,例如:

    @classmethod def find_link(self, link_id):
    cursor = self.db.collection.find({link_id: {'$exists': true}} ) 
    results = list(cursor) 
return results

检查存在如:

if(len(is_exists)>0):
  #do if exists