i trying check collection return documents element of array in document value.
for example, here 1 of documents json:
[ { "employer" : "employer1@gmail.com", "applicants" : [ { "email" : "joe@gmail.com" }, { "email" : "fred@gmail.com" } ] }, { "employer" : "employer2@gmail.com", "applicants" : [ { "email" : "steven@gmail.com" } ] }, { "employer" : "employer3@gmail.com", } ]
now, returned document applicants array not contain email "steven@gmail.com"
or there no applicants array
.
in example json above, should return documents employer1
, employer2
.
i have gotten far return documents applicant steven@gmail.com not exist
, employer1, don't understand how can include employer3
. how can this?
this query far in javascript:
collection.find({"applicants.email" : {$ne : req.user.username}}, {}, function(e,docs){ res.json(docs); console.log(docs); });
try following query, may you:-
refer $size more info on how use it.
this query return results, if applicants.email
not equal req.user.username
or if applicants
array size 0.
collection.find({$or:[ {"applicants.email" : {$ne : req.user.username}}, {applicants: {$size: 0}} }], function(e,docs){ console.log(docs); });
i never tried query. let me know if giving error.
also can try out one:-
this query return results, if applicants.email
not equal req.user.username
or if applicants
array not present.
collection.find({$or:[ {"applicants.email" : {$ne : req.user.username}}, {applicants: {$exists: false}} }], function(e,docs){ console.log(docs); });
refer $exists more info.
hope help.