我有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
来忽略空格,但我不确定如何在这里使用它。任何帮助将非常感谢。感谢。
答案 0 :(得分:0)
我建议修复集合中不一致的数据。通过修剪场地周围的空白区域来更新所有记录。
如果由于某种原因您无法或不想这样做,那么您可以使用forEach
并手动进行检查
var results = [];
db.Coll_A.find({}).forEach(function(row){
if(row.Field1.trim().indexOf(vals) === -1){
results.push(row);
}
});
答案 1 :(得分:0)