1

我有一个 MongoDB 集合,其中包含一个"name"字段的记录,我正在尝试执行查找查询,其中名称字段在查询中出现两次。我想通过 排除某些名称,$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 命令对同一字段的多次出现进行最后一次查询,是这样吗?我该如何解决?

谢谢你的帮助,加里

4

1 回答 1

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/) } })

此外,如果您只排除一个用户,您可以使用$neoperator 而不是$nin.

于 2013-11-09T23:21:43.143 回答