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..."})