我想在执行$project时应用一些简单的字符串操作,是否可以在$project上应用类似以下函数的东西?:varthemeIdFromZipUrl=function(zipUrl){returnzipUrl.match(/.*\/(T\d+)\/.*/)[1]};我正在使用以下查询:db.clientRequest.aggregate({$match:{"l":{$regex:".*zip"},"t":{"$gte":newDate('1/SEP/2013'),"$lte":newDate('7/OCT/2013')}}},{$project:{"theme_url":"$l","_
我有一个查询,它允许用户使用类似于以下格式的某些字符串字段进行过滤:“其中最新检查的描述是以下任何一项:foo或栏”。这适用于以下查询:db.getCollection('permits').find({'$expr':{'$let':{vars:{latestInspection:{'$arrayElemAt':['$inspections',{'$indexOfArray':['$inspections.inspectionDate',{'$max':'$inspections.inspectionDate'}]}]}},in:{'$in':['$$latestInspection
我需要用$cond来合并differenet列,我需要写的一个$cond如下:create_widget:{$sum:{$cond:[{$and:[{$eq:['$Method','POST']},{Url:{$regex:/.*\/widgets$/}}]},1,0]}}而且这段代码不对,这里好像不能放正则表达式,请问还有其他办法吗?我想匹配Url和正则表达式并将代码放在$cond下。示例数据如下所示{"BrandId":"a","SessionId":"a1","Method":"POST","Url":"/sample/widgets"}{"BrandId":"a","Sessi
我有不同领域的电影数据库。Genre字段包含一个逗号分隔的字符串,例如:{genre:'Action,Adventure,Sci-Fi'}我知道我可以使用正则表达式来查找匹配项。我也试过:{'genre':{'$in':genre}}问题是运行时间。返回查询结果需要很多时间。该数据库有大约30万个文档,我已经对“流派”字段进行了正常索引。 最佳答案 会说使用Map-Reduce创建一个单独的集合,将genre存储为一个数组,其中的值来自拆分的逗号分隔字符串,然后您可以运行Map-Reduce作业并对输出集合进行查询.例如,我为foo
出于某种奇怪的原因,我有一个Mongo查询,尽管使用了一个似乎无法转义的条件,但它几乎没有返回任何内容(没有数据的空白行)。要重现(假设您安装了PyMongo):importpymongoimportremanyNodesDeep={"one":{"two":{"three":{"four":{"five":"five"}}}}}fooBar={"foo":"bar"}withpymongo.MongoClient()asconn:db=conn[u'local']collection=db.my_collectionprint"Collection:{}".format(collec
我想知道如何在mongodb中仅使用其名称的最后三个字母来查找具有结构db.collection.find()的内容,谢谢!{"address":{"building":"1007","coord":[-73.856077,40.848447],"street":"MorrisParkAve","zipcode":"10462"},"borough":"Bronx","cuisine":"Bakery","grades":[{"date":{"$date":1393804800000},"grade":"A","score":2},{"date":{"$date":1378857600
我正在尝试分多个阶段对数据进行分组。目前我的查询是这样的:db.captions.aggregate([{$project:{"videoId":"$videoId","plainText":"$plainText","Group1":{$cond:{if:{$eq:["plainText",{"$regex":/leave\sa\scomment/i}]},then:"Yes",else:"No"}}}}])我不确定是否真的可以在聚合阶段的$cond中使用$regex运算符。非常感谢您的帮助!提前致谢 最佳答案 更新:从Mongo
对于某些字段,我上传了。我想确保它们没有被破坏(不是被mongo破坏,而是被我的数据生成器破坏)。感兴趣的领域将采用此正则表达式:donor_\d{1,2}_\d+例如:donor_17_82635294这条规则没有异常(exception),所以我想知道我是否可以在正则表达式中使用否定环视来查找不符合这条规则的字段。在SO上负面环顾示例的问题是,您似乎必须知道自己在寻找什么,而我不知道。我想要这样的东西。db.collection.find({field:*not*/donor_\d{1,2}_\d+/i})我的另一个选择是创建一个包含与我的正则表达式匹配的所有内容的新集合,但这会容
我正在尝试结合$regex和$in来进行简单的搜索。例如我有这样一个用户查询:$user_query="forfocusred";在我的每个文档的mongodb集合中,我都有一个关键字字段。我想获取字段关键字所在的文档:{keywords:[0]=>ford,[1]=>focus,[2]=>red}如您所见,用户输入了“for”而不是“ford”。如果用户键入Ford,我可以用$in得到结果,但我不知道如何组合$regex和$in,我看过mongodb文档和phpmongo文档。 最佳答案 这是我的快速片段:$user_query=
我正在尝试在我的mongodb查询中使用正则表达式。根据文档,我可以像这样在查询中运行正则表达式:db.customers.find({name:/^foo.bar/});但是有没有办法在文档中存储正则表达式并检索正则表达式与提供的字符串匹配的文档?示例文档:{_id:SomeID,matcher:"/^foo.bar/"}查询(在我的梦里)。db.customers.find({matcher:{$matches:"foozbar"}); 最佳答案 是的,您可以使用arbitraryJavaScriptinqueries.>db.