如何在MongoDB中多次使用相同的字段在NodeJS中查找查询

Gar*_*nis 1 mongodb node.js

我有一个包含"name"字段的记录的MongoDB集合,我正在尝试执行查询查询,其中名称字段在查询中出现两次.我想排除某些名称,通过$nin,并执行正则表达式搜索其他名称.它似乎没有工作,因为它返回所有记录.如果我只是进行正则表达式搜索或$nin搜索,它会按预期工作.

db.users.find({name:{$nin:[current_user]}).cb(array) - 工作

db.users.find({name:new RegExp(/query/)}).cb(array) - 工作

db.users.find({name:{$nin:[current_user]}, name:new RegExp(/query/)}).cb(array) - 不起作用,current_user不会从查找结果中排除.

我有一种感觉,find命令对同一个字段的多次出现采取最后一次查询,是这样的吗?我该如何解决这个问题?

谢谢你的帮助,加里

Sha*_*had 5

您的查询JSON对象包含name两次字段,它会中断查询.注意$andmongo查询运算符.有两种方法可以构建正确的查询:

1) db.users.find({ $and: [{ name: { $nin: [current_user] } }, { name: { $regex: new RegExp(/query/) } }] })

2) db.users.find({ name: { $nin: [current_user], $regex: new RegExp(/query/) } })

此外,如果只排除一个用户,则可以使用$ne运算符代替$nin.

  • 是的,逗号分隔是正确的方法.使用$并不是正确的方法.所以1)不是这样做的方式,2)是,除了你的正则表达式语法是错误的. (2认同)