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.
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:Use
$ne
as (notice no need to useObjectId()
, string will autocast toObjectId
):