MongoDB for Developers with Python Transcripts
Chapter: Course conclusion
Lecture: Lightning review: pymongo

Login or purchase this course to watch this video and the rest of the course contents.
0:00 Next step we worked with— PyMongo. So we put our Javascript away, we said all right enough with the Javascript stuff,
0:06 we're going to write in Python basically for the rest of this course. So the lowest level way to talk to MongoDB from Python is with PyMongo.
0:14 So let's look at a couple of the crud operations here. We'll start of course by importing the package, import PyMongo,
0:21 and if you don't have it just pip install it; and then we need to create a Mongo client by passing a connection string,
0:27 I believe if you actually get a hold of the PyMongo connection you can use it directly, but you should not, because the Mongo client handles
0:35 reconnects and connection pulling is stuff like that whereas the connection itself wouldn't do those kinds of things.
0:40 Then if we want to work with the database, we have this sort of interesting highly dynamic api,
0:47 we go to the client and we just say . (dot) the name of the database so we say client.the_small_bookstore, and we assign that to db
0:55 so it looks like the rest of the shell stuff that we have been doing, but technically that's optional. This database doesn't even have to exist,
1:03 we could create the database in this style just by doing our first insert into it. Whether or not it exists, we get all the database
1:09 and now we can operate on the collections. Let's imagine that in that database there's a collection called books
1:16 and we want to know how many of them are, we would just say db.books.count and that would actually go there and do this operation.
1:23 If it happens to be that either the database of the collection doesn't exist, it doesn't crash, you get zero.
1:28 We could also do a find_one, this line here is notable because in the Javascript api is findOne and they've made a Pythonic version here, so find_one
1:40 just be aware that it's not always a one to one exact verbatim match from the native query syntax over to PyMongo. We can also do an actual search,
1:51 before we said find_one I basically got the first here we're going to say I want to find a book by isbn, I want to pass it over,
1:58 here we use Python dictionaries which play the role of those prototypical json objects. We also insert new data, so here we're going to say
2:07 insert this thing which is a dictionary, it has a title called new book and an isbn of whatever is written there and we get back this result,
2:16 the result will have this object id in the field inserted _id, we can go requery it and do all sorts of stuff with it.
2:24 Basically when we say insert one, we get this result which, if it succeeds has the inserted id. Now these are the straightforward crud operations,
2:32 we can also use our fancy in place operators, so here let's just insert this book, so we see what we get, and we grab a hold of the inserted id,
2:39 and now suppose we want to add a field called favorited_by, and this is going to be a list, and we want the list to be basically distinct
2:48 we're adding the ids of the customers or people visiting our site who have favorited in this book, and we'd like to put them in there
2:55 but there's no reason to have them in there twice, that can cause all sorts of problems. We're going to use the dollar add to set, so we run this,
3:02 run it again for 1002, and hey we could run it a second time for 1002, and what we'll end up with is an object that looks like this,
3:09 the two things we inserted, the generated_id and his favorited_by list which has 1001 and 1002. Definitely keep in mind these in place operators
3:20 because they're very powerful and they leverage some of the special properties of the way MongoDB treats documents atomically.

Talk Python's Mastodon Michael Kennedy's Mastodon