猫鼬查询从结果中排除一个值
Mongoose query to exclude a value from the result
我想检索用户列表但不包括当前用户 ID。
现在我没有排除:
User.find()
.or([
{email: new RegExp(req.param('searchTerm'), 'i')},
{displayName: new RegExp(req.param('searchTerm'), 'i')}
],
'displayName email profileImageURL')
.limit(20)
.exec(function(err, users)
如何更改查询以使用 AND 我需要排除当前用户 ID?
谢谢
为此向您的查询链添加初始 where
调用:
User.find()
.where('_id').ne(userID)
.or([
{email: new RegExp(req.param('searchTerm'), 'i')},
{displayName: new RegExp(req.param('searchTerm'), 'i')}
])
.select('displayName email profileImageURL')
.limit(20)
.exec(function(err, users)
or
调用使它读起来好像两者是“或”运算,但实际上是“与”运算。
您想要的只是 $ne
与 _id
的另一个条件。这可以通过多种方式表示:
任一:
User.find().where({ "_id": { "$ne": currentId })
.or([
{email: new RegExp(req.param('searchTerm'), 'i')},
{displayName: new RegExp(req.param('searchTerm'), 'i')}
]).
.select('displayName email profileImageURL')
.limit(20)
.exec(function(err, users) {
});
或:
User.find({ "_id": { "$ne": currentId })
.or([
{email: new RegExp(req.param('searchTerm'), 'i')},
{displayName: new RegExp(req.param('searchTerm'), 'i')}
])
.select('displayName email profileImageURL')
.limit(20)
.exec(function(err, users)
或者甚至只是作为本机数据结构。毕竟是JavaScript:
User.find(
{
"_id": { "$ne": currentId },
"$or": [
{ "email": new RegExp(req.param('searchTerm'), 'i')},
{ "displayName": new RegExp(req.param('searchTerm'), 'i')}
],
},
'displayName email profileImageURL')
.limit(20)
.exec(function(err, users) {
});
因此您不需要 "helper" 方法,这也会导致代码更长且灵活性更低。数据结构很容易用 JavaScript 等动态语言进行操作。
我想检索用户列表但不包括当前用户 ID。
现在我没有排除:
User.find()
.or([
{email: new RegExp(req.param('searchTerm'), 'i')},
{displayName: new RegExp(req.param('searchTerm'), 'i')}
],
'displayName email profileImageURL')
.limit(20)
.exec(function(err, users)
如何更改查询以使用 AND 我需要排除当前用户 ID?
谢谢
为此向您的查询链添加初始 where
调用:
User.find()
.where('_id').ne(userID)
.or([
{email: new RegExp(req.param('searchTerm'), 'i')},
{displayName: new RegExp(req.param('searchTerm'), 'i')}
])
.select('displayName email profileImageURL')
.limit(20)
.exec(function(err, users)
or
调用使它读起来好像两者是“或”运算,但实际上是“与”运算。
您想要的只是 $ne
与 _id
的另一个条件。这可以通过多种方式表示:
任一:
User.find().where({ "_id": { "$ne": currentId })
.or([
{email: new RegExp(req.param('searchTerm'), 'i')},
{displayName: new RegExp(req.param('searchTerm'), 'i')}
]).
.select('displayName email profileImageURL')
.limit(20)
.exec(function(err, users) {
});
或:
User.find({ "_id": { "$ne": currentId })
.or([
{email: new RegExp(req.param('searchTerm'), 'i')},
{displayName: new RegExp(req.param('searchTerm'), 'i')}
])
.select('displayName email profileImageURL')
.limit(20)
.exec(function(err, users)
或者甚至只是作为本机数据结构。毕竟是JavaScript:
User.find(
{
"_id": { "$ne": currentId },
"$or": [
{ "email": new RegExp(req.param('searchTerm'), 'i')},
{ "displayName": new RegExp(req.param('searchTerm'), 'i')}
],
},
'displayName email profileImageURL')
.limit(20)
.exec(function(err, users) {
});
因此您不需要 "helper" 方法,这也会导致代码更长且灵活性更低。数据结构很容易用 JavaScript 等动态语言进行操作。