我如何从这个文档集合中传递
/* 1 */
{
"F" : [
{
"n" : "test1",
"v" : "value1"
},
{
"n" : "test2",
"v" : "value2"
}
],
"POR" : [
{
"n" : "1test1",
"v" : "1value1"
},
{
"n" : "1test2",
"v" : "1value2"
},
{
"n" : "1test3",
"v" : "1value3"
}
]
}
/* 2 */
{
"F" : [
{
"n" : "2test1",
"v" : "2value1"
},
{
"n" : "2test2",
"v" : "2value2"
}
],
"POR" : [
{
"n" : "2test1",
"v" : "2value1"
},
{
"n" : "2test2",
"v" : "2value2"
}
]
}
/* 3 */
{
"F" : [
{
"n" : "3test1",
"v" : "3value1"
},
{
"n" : "3test2",
"v" : "3value2"
}
],
"POR" : [
{
"n" : "3test1",
"v" : "3value1"
}
]
}
为此:
{
"ITEMS": [
{ "n": "2test1", "v": "2value1" },
{ "n": "2test2", "v": "2value2" },
{ "n": "1test1", "v": "1value1" },
{ "n": "1test2", "v": "1value2" },
{ "n": "1test3", "v": "1value3" },
{ "n": "3test1", "v": "3value1" }
]
}
我想从几个文档中提取子数组元素,但我找不到方法/方法。
尝试的第一种方法:
db.test.aggregate( [ { $unwind : "$POR" } ] ).pretty();
最佳答案
我认为这可以满足您的需求:
> db.uwnd.aggregate([
{$unwind:"$F"},
{$unwind:"$POR"},
{$group:{_id:null,items:{$addToSet:"$F",$addToSet:"$POR"}}}
]).pretty()
鉴于上面的数据,这将返回以下文档:
{
"_id" : null,
"items" : [
{
"n" : "1test3",
"v" : "1value3"
},
{
"n" : "1test1",
"v" : "1value1"
},
{
"n" : "1test2",
"v" : "1value2"
},
{
"n" : "2test1",
"v" : "2value1"
},
{
"n" : "2test2",
"v" : "2value2"
},
{
"n" : "3test1",
"v" : "3value1"
}
]
}
因此查询展开两个数组,然后对数据进行分组,将来自 "F" 和 "POR" 对象的条目添加到新的项目数组
关于MongoDB 从文档中提取子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41226509/
Rails中有没有一种方法可以提取与路由关联的HTTP动词?例如,给定这样的路线:将“users”匹配到:“users#show”,通过:[:get,:post]我能实现这样的目标吗?users_path.respond_to?(:get)(显然#respond_to不是正确的方法)我最接近的是通过执行以下操作,但它似乎并不令人满意。Rails.application.routes.routes.named_routes["users"].constraints[:request_method]#=>/^GET$/对于上下文,我有一个设置cookie然后执行redirect_to:ba
我有一个.pfx格式的证书,我需要使用ruby提取公共(public)、私有(private)和CA证书。使用shell我可以这样做:#ExtractPublicKey(askforpassword)opensslpkcs12-infile.pfx-outfile_public.pem-clcerts-nokeys#ExtractCertificateAuthorityKey(askforpassword)opensslpkcs12-infile.pfx-outfile_ca.pem-cacerts-nokeys#ExtractPrivateKey(askforpassword)o
我已经开始了:defsplit_array(array,size)index=0results=[]ifsize>0whileindex如果我在[1,2,3,4,5,6]上运行它,比如split_array([1,2,3,4,5,6],3)它将产生这个数组:[[1,2,3],[4,5,6]]。在Ruby1.8.7中是否已经有可用的东西可以做到这一点? 最佳答案 [1,2,3,4,5,6].each_slice(3).to_a#=>[[1,2,3],[4,5,6]]对于1.8.6:require'enumerator'[1,2,3,4
我正在尝试提取方括号内的内容。到目前为止,我一直在使用它,它有效,但我想知道我是否可以直接在正则表达式中使用某些东西,而不是使用这个删除功能。a="Thisissuchagreatday[coolawesome]"a[/\[.*?\]/].delete('[]')#=>"coolawesome" 最佳答案 差不多。a="Thisissuchagreatday[coolawesome]"a[/\[(.*?)\]/,1]#=>"coolawesome"a[/(?"coolawesome"第一个依赖于提取组而不是完全匹配;第二个利用前瞻和
给定一个文本,我想删除url部分并保留其他文本。例子:'blablabla...blablabla...http://bit.ly/someuriblablabla...'成为'blablabla...blablabla...blablabla...'是否有任何ruby内置方法可以有效地执行此操作? 最佳答案 尝试使用正则表达式:(?:f|ht)tps?:\/[^\s]+ 关于ruby-使用ruby从文本中删除url,我们在StackOverflow上找到一个类似的问题:
如何获取外部命令的输出并从中提取值?我有这样的东西:stdin,stdout,stderr,wait_thr=Open3.popen3("#{path}/foobar",configfile)if/exit0/=~wait_thr.value.to_srunlog.puts("Foobarexitednormally.\n")puts"Testcompleted."someoutputvalue=stdout.read("TX.*\s+(\d+)\s+")puts"Outputvalue:"+someoutputvalueend我没有在标准输出上使用正确的方法,因为Ruby告诉我它不能
我一直在尝试从csv文件中获取单个列。我已经阅读了文档,http://www.ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html但仍然不太了解如何使用它。如果我使用CSV.table,与CSV.read相比,响应速度非常慢。我承认我正在加载的数据集非常大,这正是我只想从中获取单个列的原因。我的请求目前看起来像这样@dataTable=CSV.table('path_to_csv.csv')当我调试时,我得到了的响应#ThedocumentationsaysIshouldbeabletouseby_col(),butwhenItrytooutpu
当我写这篇文章时,我以为我是Ruby巨人:#havingthishashhash={'Portugal'=>1,'France'=>2,'USA'=>3}#country_idcomesfrominputcountry_name=(hash.select{|k,v|v==country_id.to_i}.first||[]).first它确实正确地提取了国家名称,如果找不到国家也不会失败。我对此非常满意。但是我的导师说它可以/应该在可读性、长度和性能方面进行优化!还有什么比这更清晰/更快的呢?请指教 最佳答案 嗯,看来你的导师是对的
是否可以从Ruby中的HTMLblock中提取IMG标签(或只是IMG标签的src属性)?例如,如果我有一个HTMLblock,例如:Loremipsumdolorsitamet,laboreetdoloremagnaaliqua.Duisauteiruredolorinreprehenderitinvoluptatevelitessecillumdoloreeufugiatnullapariatur.我可以通过正则表达式或其他方法只提取IMG标签或该IMG标签的src吗?提前感谢您的任何建议! 最佳答案 使用Nokogiri:re
给定一个Proc对象,是否可以查看其中的代码?例如:p=Proc.new{test=0}我需要的是通过某种方式从已创建的Proc对象中获取字符串“test=0”。 最佳答案 您可以使用ruby2ruby图书馆:>>#testedwith1.8.7>>require"parse_tree"=>true>>require"ruby2ruby"=>true>>require"parse_tree_extensions"=>true>>p=Proc.new{test=0}>>p.to_ruby=>"proc{test=0}"您还可以将此过程