I'm trying to display a query in MongoDB where a text field is not '' (blank)
{ 'name' : { $not : '' }}
However I get the error invalid use of $not
I've looked over the documentation but the examples they use are for complicated cases (with regexp and $not
negating another operator).
How would I do the simple thing I'm trying to do?
This question is related to
mongodb
From the Mongo docs:
The
$not
operator only affects other operators and cannot check fields and documents independently. So, use the$not
operator for logical disjunctions and the$ne
operator to test the contents of fields directly.
Since you are testing the field directly $ne
is the right operator to use here.
Edit:
A situation where you would like to use $not
is:
db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
That would select all documents where:
If you want to do multiple $ne
then do
db.users.find({name : {$nin : ["mary", "dick", "jane"]}})
Use $ne
instead of $not
http://docs.mongodb.org/manual/reference/operator/ne/#op._S_ne
db.collections.find({"name": {$ne: ""}});
Real life example; find all but not current user:
var players = Players.find({ my_x: player.my_x, my_y: player.my_y, userId: {$ne: Meteor.userId()} });
If there is a null
in an array and you want to avoid it:
db.test.find({"contain" : {$ne :[] }}).pretty()
Source: Stackoverflow.com