mongodb $not _id
find, mongodb, notin
Solution
You need to do a `$ne` (not equal) to make sure the current pet you are viewing is excluded from the search by owner.
Example in the `mongo` shell:
var viewingPetId = ObjectId("515535b6760fe8735f5f6899");
var ownerId = ObjectId("515535ba760fe8735f5f689a");
db.mypet.find(
{
_id: { $ne: viewingPetId },
owner: ownerId
}
)
Problem
I need a way to search but not include an _id which is already on the screen in front of the user. For example, I have 3 pet profiles one which the user is already viewing. On that page I have a heading called My Family. I then run this search: ``` public function fetch_family($owner) { $collection = static::db()->mypet; $cursor = $collection->find(array('owner' => new MongoId($owner))); if ($cursor->count() > 0) { $family = array(); // iterate through the results while( $cursor->hasNext() ) { $family[] = ($cursor->getNext()); } return $family; } } ``` And it returns all the pets in my family even knowing I am already showing one. So I want to exclude that one _id from the search. I thought something like this. ``` $cursor = $collection->find(array('owner' => new MongoId($owner), '$not'=>array('_id'=>new MongoId(INSERT ID HERE)))); ``` However, that just stops the whole thing from running.