node.js - $ne query not working with mongoose but working in mongoshell -
when execute mongoose query
financedproject.find({_id:{$ne:fb.financedprojects.financedprojectid}).exec( callback); where fb object this
{ _id: objectid("54das4da9dsa9d4ad4a9"); name: "some", financedprojects: [ {registry:"147", financedprojectid:objectid("13da4sd4sa48da4dsa")}, {registry:"189", financedprojectid:objectid("5d5asd5a4sd5ada5sd")} ] { the result undefined , when execute in mongoshell results expected
because financedprojects array have address element [] like:
financedproject.find({ _id: { $ne: fb.financedprojects[0|.financedprojectid } }).exec( callback ); edit:
mongoose ist javascript, follows rules of javascript. fb.financedprojects array. if use expression fb.financedprojects.financedprojectid evaluated undefined javascript interpreter, because there no financedprojectid property within array (arrays have 0,1,2,3,... properties). mongoose { $ne: undefined } , has no chance recognize meant property financedprojectid of array elements.
to achieve want, can this:
var arr = []; for( var i=0; i<fb.financedprojects.length; i+=1 ) { arr.push( fb.financedprojects[i|.financedprojectid ); } financedproject.find({ $not: { _id: { $in: arr } } }).exec( callback );
Comments
Post a Comment