我有一个包含"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命令对同一个字段的多次出现采取最后一次查询,是这样的吗?我该如何解决这个问题?
谢谢你的帮助,加里
您的查询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.
| 归档时间: |
|
| 查看次数: |
2662 次 |
| 最近记录: |