在 mongoose mongodb 中使用 $or 返回文档的一部分
Posted
技术标签:
【中文标题】在 mongoose mongodb 中使用 $or 返回文档的一部分【英文标题】:return part of the doc using $or in mongoose mongodb 【发布时间】:2015-08-14 04:44:01 【问题描述】: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;
);
上述查询会获取电子邮件或姓名与搜索条件匹配的任何用户。然而,正如预期的那样,它返回找到的用户的整个文档..
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 的 $or 与 mongo 的 projection
选项结合使用,或者后处理是否是唯一的选项?
【问题讨论】:
【参考方案1】:您应该能够将另一个对象传递给您的查找和使用投影
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;
);
来源http://mongoosejs.com/docs/api.html#model_Model.find
【讨论】:
我也为第一次玩 mongo 的人找到了这个:***.com/questions/12096262/…以上是关于在 mongoose mongodb 中使用 $or 返回文档的一部分的主要内容,如果未能解决你的问题,请参考以下文章
使用 mongoose 在 mongodb 中保存多个字段数组
如何使用 Mongoose 在 MongoDB 中插入 JSON 数组
如何在 typescript 中使用 mongoose 在 mongodb 中插入数据?