返回文档的一部分使用$或在mongoosemongodb
User.find({ $or:[ {'userSetData.name': { $regex: new RegExp( searchTerm ,'i') }}, {'local.email': { $regex: new RegExp( searchTerm ,'i') }}, {'google.name': { $regex: new RegExp( searchTerm ,'i') }}, {'google.email': { $regex: new RegExp( searchTerm ,'i') }}, {'facebook.name': { $regex: new RegExp( searchTerm ,'i') }}, {'facebook.email': { $regex: new RegExp( searchTerm ,'i') }} ] }, function(err, doc) { if( err ){ console.log( err ); } return doc; });
上述查询提取任何用户的电子邮件或名称符合search条件。 然而,正如所料,它返回的用户发现的整个文档..
http://docs.mongodb.org/manual/tutorial/project-fields-from-query-results/在mongodb网站上,他们演示了如何使用projection
来限制返回的文档的字段:
db.inventory.find( { type: 'food' }, { item: 1, qty: 1, _id:0 } )
是否可以将$ mongoose与mongo的projection
选项结合起来,还是将后处理的唯一选项?
您应该能够将另一个对象传递给您的查找并使用投影
User.find({ $or:[ {'userSetData.name': { $regex: new RegExp( searchTerm ,'i') }}, {'local.email': { $regex: new RegExp( searchTerm ,'i') }}, {'google.name': { $regex: new RegExp( searchTerm ,'i') }}, {'google.email': { $regex: new RegExp( searchTerm ,'i') }}, {'facebook.name': { $regex: new RegExp( searchTerm ,'i') }}, {'facebook.email': { $regex: new RegExp( searchTerm ,'i') }} ] }, {<projection goes here>}, function(err, doc) { if( err ){ console.log( err ); } return doc; });