简体   繁体   中英

Python check MongoDB field exists or not

I have two collections one is websites which stores information like:

{
    "_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"
        }
    ]
}

And another is website_info in which I want store info like:

    {
    "_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",
            }
        ]
    }

}

I am using Python3 and mongoDB. Here I want to check the field like "link_id" which is "test-1" in the website_info for main_id = 3 exists or not. If it is exists I will update for same, if does not exists I want to insert new record set. The thing is how to check whether field "test-1" (which is the value from websites collection) in website_info collection exists or not. Help is appreciated.

Here in my case, link_id will be unique in website_info collection. So no need to check for main_id, only checking for link_id solved my issue, like:

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

And check for exists like:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM