我有2个集合,我试图从Coll_A
获取所有记录,而Field1
中没有某个字段(Coll_B
)。
我遇到的问题是,Field1
中的这个Coll_A
(包含一个字符串值)在结尾处填充了一定长度的空格,但是在其他集合中则没有这种填充。
因此,对于以下查询,vals
数组具有未填充的记录,因此当我使用db.Coll_A.find
时,它将返回错误的结果。
vals = db.Coll_B.find({},
{"Field1" : 1, _id: 0})
.map(function(a){
return a.Field1;
});
db.Coll_A.find({ "Field1": { $nin: vals }});
我该如何解决?我查找使用
regex
忽略空格,但不确定如何在此处使用它。任何帮助将不胜感激。谢谢。 最佳答案
您可以简单地将返回值修改为array
的regular expressions
并在$nin
运算符中使用它。
码:
var exp = db.Coll_B.find({}, {"Field1" : 1, _id: 0}).map(function(a){
return new RegExp(a.Field1+"\\s*$");
});
db.coll_A.find({"Field1":{$nin:exp}});
您不能在
$regex
或$nin
运算符内使用$in
运算符。关于javascript - mongodb-数组上的Nin和正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34364696/