因此,我已经尽力进行了尽可能多的研究,而没有得出对我有用的结论。我有一个查询,我在Mongo中使用它来仅抓取以某个字符结尾的_id。这些是MongoDB中的标准base 16对象ID。我要从中得到的结果是分散工作,其中执行查询的工作仅适用于以16为底的值的ID。因此,我将有16个进程负责对ObjectId运行各自的指令,其中_id以0-e结尾。
db.Collection.find({ $where : "this._id.toString().match(/(SomeNumber)..$/i)"})
我的问题是,与其他过滤器(例如Builders.Filter.Lte(“ Somefield”,someVal)然后是.FindOne())一起使用的C#驱动程序等效于什么?
我的决赛看起来像
var filter1 = Builders<BsonDocument>.Filter.Where(Id matches regex);
var filter2 = Builders<BsonDocument>.Filter.Lte("Somefield", someVal);
var qfilter = filter1 & filter2;
var returndoc = Collection.FindOne(qfilter);
希望这将在我的对象id的最后一个值与我感兴趣的对象的最后一个值相匹配并且Somefield小于someVal的时候返回一个文档。
这是我到目前为止尝试过的。
//This one doesn't work because objectId does not support regex comparison
var iDFilter = Builders<BsonDocument>.Filter.Regex("_id", _threadIndexB16);
//These two never returned any values
var iDFilter = Builders<BsonDocument>.Filter.Where("this._id.toString().match(/\"" + _myWantedIndex + "..$/i)\")";
var iDFilter = new BsonDocument("$where", "this._id.toString().match(/" + _myWantedIndex + "..$/i)");
帮助转换,将不胜感激。只要结果是我所追求的文件,也欢迎其他选择。