3

I'm a newbie in using mongodb In our project, there is a "Events" collection and each document can be simplified as:

{
    _id:"uuid4",
    events:
    [
        {
            "name":"event1",  //event name
            "occurs":3        //the number of event1 occurs 
        },
        {
            "name":"event2",
            "occurs":3
        }
    ]
}

what i expect:

  • if event name is exist in events array, incr occurs 1
  • if event name is not in events array, add new record, name to be event name, occurs init as 1
  • using just one "sql"

How this can be done ?

psudo code should be

def event_happens(id, eventname):
    # if id is uuid4, eventname is event1
    # result should be:
    # 
    # {
    #    _id:"uuid4",
    #    events:
    #    [
    #        {
    #            "name":"event1",  
    #            "occurs":4        //!!number incr to 4
    #        },
    #        {
    #            "name":"event2",
    #            "occurs":3
    #        }
    #    ]
    #}
    # if id is uuid4, eventname is event7
    # result should be:
    # 
    # {
    #    _id:"uuid4",
    #    events:
    #    [
    #        {
    #            "name":"event1",  
    #            "occurs":4        
    #        },
    #        {
    #            "name":"event2",
    #            "occurs":3
    #        },
    #        {
    #            "name":"event7", // add new record
    #            "occurs":1
    #        }
    #    ]
    #}

    collection.update({"id":id},{"some magic update query here..."})

0 Answers0