|
|
00:01 We've explored the shell a little bit, we've done some querying,
|
|
|
00:03 let's look at the concepts behind it, so you have them nice and concise,
|
|
|
00:06 in case you want to come back for a reference.
|
|
|
00:09 So if we want to query say the Book collection in the bookstore database
|
|
|
00:12 where the title is 'From the Corner of His Eye',
|
|
|
00:17 we can type find and give it this little prototypical json object,
|
|
|
00:20 hit enter, and boom everything comes back that has the same title,
|
|
|
00:25 different isbns, different primary keys and so on,
|
|
|
00:27 but releases, different versions,
|
|
|
00:29 maybe one is paper back on is kindle, who knows;
|
|
|
00:31 so the idea is we're going to come up with these prototypical json objects,
|
|
|
00:35 here title: whatever the title is.
|
|
|
00:39 Now, if we want to do more than just what is the title here
|
|
|
00:42 we want to say give me the book with the title this and the isbn that,
|
|
|
00:47 given that the isbn is probably unique,
|
|
|
00:50 we could maybe just search for it instead,
|
|
|
00:52 but we want to demonstrate the and clause, right.
|
|
|
00:54 So here we'll give it this prototypical sub document
|
|
|
00:56 with the title being the title we're looking for, and the isbn being this one.
|
|
|
01:00 And notice, now we only get one record back,
|
|
|
01:03 so our prototype will document is basically an and clause, every field must match.
|
|
|
01:09 We also saw that one of the excellent ways to group related data,
|
|
|
01:14 this would be what you might call an aggregate in domain driven design,
|
|
|
01:18 is to embed items into the document,
|
|
|
01:22 so here we have ratings that ratings have little sub objects,
|
|
|
01:25 sub documents that have things like user ids and values
|
|
|
01:28 and at the very beginning, and in the example you saw,
|
|
|
01:30 the superpower of these document databases, is that they can query them,
|
|
|
01:34 so I want to find all the books that have been rated by this highlighted user id—
|
|
|
01:38 how do I do that? So we just pretend we're traversing the objects
|
|
|
01:41 Ratings.UserId, so down here we'll say find Ratings.UserId
|
|
|
01:46 and we give it the object id that we're looking for
|
|
|
01:49 because ''Ratings.UserId'' is not a valid key or a field name in a Javascript object
|
|
|
01:54 we have to put it in quotes, but other than that, it's basically the same idea
|
|
|
01:58 and here we get back all the books that have been rated by this particular user.
|
|
|
02:02 So we just use this dotted notation to traverse the hierarchy
|
|
|
02:07 one other interesting point is maybe ratings just contained the number
|
|
|
02:11 like it was at 7,5,... then you could actually just if I want to say
|
|
|
02:17 find all the books that have a rating of seven
|
|
|
02:20 I could just say find ratings:7,
|
|
|
02:23 I don't have to do this dot notation or anything like that,
|
|
|
02:25 but because I'm looking within that document inside ratings,
|
|
|
02:27 regardless of whether it's an array or it's a single rating thing,
|
|
|
02:31 you do it like this that dot notation. |