Database Reference
In-Depth Information
Finding a Value Not in an Array
The
$nin
operator functions similarly to the
$in
operator, except that it searches for the
objects where the specified field does
not
have a value in the specified array:
> db.media.find( {Released : {$nin : [1999,2008,2009] },Type : "DVD" },
{ "Cast" : 0 } )
{ "_id" : ObjectId("4c436969c603000000007ed2"), "Type" : "DVD", "Title" :
"Blade Runner", "Released" : 1982 }
{ "_id" : ObjectId("4c4369a3c603000000007ed3"), "Type" : "DVD", "Title" :
"Toy Story 3", "Released" : 2010 }
Matching All Attributes in a Document
The
$all
operator also works similarly to the
$in
operator. However,
$all
requires that
all attributes match in the documents, whereas only one attribute must match for the
$in
operator. Let's look at an example that illustrates these differences. First, here's an
example that uses
$in
:
> db.media.find ( { Released : {$in : ["2010","2009"] } }, { "Cast" : 0 } )
{ "_id" : ObjectId("4c4369a3c603000000007ed3"), "Type" : "DVD", "Title" :
"Toy Story 3", "Released" : 2010 }
One document is returned for the
$in
operator because there's a match for 2010, but
not for 2009. However, the
$all
parameter doesn't return any results, because there are
no matching documents with 2009 in the value:
> db.media.find ( { Released : {$all : ["2010","2009"] } }, { "Cast" : 0 } )
Searching for Multiple Expressions in a Document
You can use the
$or
operator to search for multiple expressions in a single query, where
only one criterion needs to match to return a given document. Unlike the
$in
operator,
$or
allows you to specify both the key and the value, rather than only the value:
> db.media.find({ $or : [ { "Title" : "Toy Story 3" }, { "ISBN" :
"987-1-4302-3051-9" } ] } )
{ "_id" : ObjectId("4c5fc7d8db290000000067c5"), "Type" : "Book", "Title" :
"Definitive Guide to MongoDB, The", "ISBN" : "987-1-4302-3051-9",
"Publisher" : "Apress", "Author" : [“Hows, David”, "Membrey, Peter",
"Plugge, Eelco",
"Hawkins, Tim" ] }
{ "_id" : ObjectId("4c5fc943db290000000067ca"), "Type" : "DVD", "Title" :
"Toy Story 3", "Released" : 2010 }