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

时间:2013-11-09 22:59:39

标签: node.js mongodb

我有一个包含"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命令会对同一个字段的多次出现进行最后一次查询,是这样吗?我该如何解决它?

感谢您的帮助, 加里

1 个答案:

答案 0 :(得分:5)

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

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