我可以检索有关的所有集合的基本信息MongoDB
有F#
?
我有一个MongoDB
> 450集合.我可以访问数据库
open MongoDB.Bson
open MongoDB.Driver
open MongoDB.Driver.Core
open MongoDB.FSharp
open System.Collections.Generic
let connectionString = "mystring"
let client = new MongoClient(connectionString)
let db = client.GetDatabase(name = "Production")
Run Code Online (Sandbox Code Playgroud)
我曾考虑尝试让所有集合循环遍历每个集合名称,并获得有关每个集合的基本信息
let collections = db.ListCollections()
Run Code Online (Sandbox Code Playgroud)
和
db.GetCollection([name of a collection])
Run Code Online (Sandbox Code Playgroud)
但是db.GetCollection([name])
要求我定义一个类型来提取每个集合的信息.这对我来说很有挑战性,因为我不想为每个集合定义一个类型,其中有> 450,坦率地说,我对这个数据库并不是很了解.(实际上,我的组织中没有人这样做;这就是为什么我要整理一个非常基本的数据字典.)
是否真的需要为每个集合定义类型?我是否可以使用此处提供的MongoCollection方法而无需为每个集合定义类型?
编辑:最后,我希望能够输出集合名称,每个集合中的n个文档,每个集合中的字段名称列表以及每个字段类型的列表.
我有几个口头表达式,我已经打包成一个函数:
open FsVerbalExpressions
open FsVerbalExpressions.VerbalExpression
open System.Text.RegularExpressions
open System
let createOrVerbExFromList (verbExList: VerbEx list) =
let orVerbEx =
verbExList
|> List.reduce (fun acc thing -> verbExOrVerbEx RegexOptions.IgnoreCase acc thing) //simpleVerbEx
orVerbEx
let k12VerbEx =
let kTo12 = ["SCHOOL"; "DIST"; "SD"; "HS"; "BD OF ED"]
kTo12
|> List.map (fun word -> VerbEx(word))
|> createOrVerbExFromList
let twoYearCollegeVerbEx =
VerbEx("2 Year College")
let universityVerbEx =
VerbEx("UNIV")
let privateSchoolVerbEx =
VerbEx("ACAD")
//Here there be dragons:
let newInst (x: string) =
match (isMatch x k12VerbEx) …
Run Code Online (Sandbox Code Playgroud) 我可以KMeans
很容易地计算集群成员资格:
open System
open System.IO
open Utils
open Accord
open Accord.Math
open Accord.MachineLearning
let vals = [|
[|1.0; 2.0; 3.0; 2.0|]
[|1.1; 1.9; 3.1; 4.0|]
[|2.0; 3.0; 4.0; 4.0|]
[|3.0; 3.1; 2.0; 3.0|]
[|2.0; 4.0; 3.0; 6.0|]
[|1.0; 5.0; 5.0; 7.0|]
[|4.0; 3.0; 6.0; 8.0|]
[|5.0; 4.0; 3.0; 6.0|]
[|6.0; 4.0; 8.0; 7.0|]
[|5.0; 6.0; 5.0; 9.0|]
[|4.0; 2.0; 7.0; 8.0|]
[|8.0; 9.0; 3.1; 2.2|]
[|8.0; 9.0; 2.0; 2.0|]
[|10.0; 2.0; 3.0; 2.0|]
[|10.1; 1.9; 3.1; 4.0|]
[|20.0; …
Run Code Online (Sandbox Code Playgroud) 我是图论的新手.
我已经使用QuickGraph库创建了一个邻接图,最终,我希望从图中获得连接的组件.
open QuickGraph
let tup = [(1M,1M); (2M, 18M); (3M, 3M); (4M, 5M); (5M, 24M); (24M, 6M); (7M, 6M); (8M, 9M); (10M, 9M)]
type Vertex = {decimal: decimal}
let edges =
tup
|> List.map (fun x -> ({decimal = fst x}, {decimal = snd x}))
|> List.map (fun x -> Edge<Vertex> x)
//Undirected Graph
let undirGraph = edges.ToUndirectedGraph()
undirGraph.Edges
undirGraph.Vertices
let x = QuickGraph.Algorithms.ConnectedComponents.ConnectedComponentsAlgorithm(undirGraph)
Run Code Online (Sandbox Code Playgroud)
输出来自undirGraph.Edges
:
val it : Collections.Generic.IEnumerable<Edge<Vertex>> =
seq
[FSI_0227+Vertex->FSI_0227+Vertex {Source = {decimal …
Run Code Online (Sandbox Code Playgroud) 我在Windows 7上使用32位R 3.1.2.
我最近R CMD check --as-cran
在一个最近开发的软件包上进行了一次,只收到了"新提交"的说明.这里和R-devel的研究表明这可以忽略不计.devtools::build_win()
除了前面提到的那个之外,我还使用过并没有收到任何注释或警告.此外,我在本地构建了包R CMD build
,R CMD INSTALL --build
并且一切正常,包括PDF手册.
提交给CRAN后,我被告知会发出警告:
This fails to make its manual:
* checking PDF version of manual ... WARNING
LaTeX errors when creating PDF version.
This typically indicates Rd problems.
LaTeX errors found:
! Missing $ inserted.
<inserted text>
$
l.682 }{}
! Missing } inserted.
<inserted text>
}
l.682 }{}
...
The line appears to be
\widehat{R_1} = \frac{\sum\limits_{i=1}^n{c_i/n}}{\sum\limits_{i=1}^n{L_i/n}}
Run Code Online (Sandbox Code Playgroud)
此处的其他研究表明,我使用win-builder.r-project.org/检查开发版本上的包,并且该测试的结果只引发了"新提交"警告.
我很茫然.我无法复制CRAN发现一切似乎在我的机器上和 …
为什么如果我使用CsvProvider<>
F#创建一个新的CSV类型,如下所示:
type ThisCsv = CsvProvider<Schema = "A (decimal), B (string), C (decimal)", HasHeaders = false>
Run Code Online (Sandbox Code Playgroud)
然后创建/填充/保存.csv,生成的文件不包含我指定的架构中的标头?似乎应该有一种方法在最终的.csv文件中包含标题,但事实并非如此.
设置HasHeaders = true
错误,因为没有提供样本.工作的唯一方法HasHeaders = true
是获得样本.csv.在我看来,应该有一种方法来指定没有样本的模式,并在最终文件中包含标头.
我在使用时遗漏[nameOfMyCSV].Save()
了哪些内容可以包含模式中的标题,或者这可以不做?
我对应该如何使用terraform将Athena连接到我的Glue Catalog数据库感到困惑。
我用
resource "aws_glue_catalog_database" "catalog_database" {
name = "${var.glue_db_name}"
}
resource "aws_glue_crawler" "datalake_crawler" {
database_name = "${var.glue_db_name}"
name = "${var.crawler_name}"
role = "${aws_iam_role.crawler_iam_role.name}"
description = "${var.crawler_description}"
table_prefix = "${var.table_prefix}"
schedule = "${var.schedule}"
s3_target {
path = "s3://${var.data_bucket_name[0]}"
}
s3_target {
path = "s3://${var.data_bucket_name[1]}"
}
}
Run Code Online (Sandbox Code Playgroud)
创建一个Glue数据库,然后使用搜寻器来爬行s3存储桶(这里只有两个),但是我不知道如何将Athena查询服务链接到Glue DB。在的terraform文档中Athena
,似乎没有一种方法可以将Athena连接到Glue目录,而只能连接到S3存储桶。但是,显然,雅典娜可以与Glue集成在一起。
如何构建Athena数据库以使用我的Glue目录作为数据源而不是S3存储桶?
amazon-web-services terraform aws-glue terraform-provider-aws aws-glue-data-catalog
我最近开始使用该R
包,openxlsx
因为它根本不需要rJava
包或Java.我正在尝试将日期写入列,但行格式未应用于我的xlsx
文件中的最终日期列.
示例数据:
tmp <- structure(list(someNumbers = c(8L, 3L, 4L, 4L, 1L, 4L, 2L, 2L,
7L, 2L), someLetters = structure(c(9L, 4L, 1L, 2L, 7L, 3L, 4L,
6L, 8L, 5L), .Label = c("b", "d", "e", "h", "l", "n", "o", "t",
"u"), class = "factor"), moreNumbers = c(25L, 25L, 36L, 38L,
39L, 32L, 31L, 40L, 28L, 32L), moreStuff = c(0.37, 1.39, -2.27,
0.65, -0.71, -1.67, 0.71, 1.32, 2.14, 1.13), words = structure(c(5L,
3L, 7L, 1L, …
Run Code Online (Sandbox Code Playgroud) 假设我有这个数组:
let reportStructure = [|(2, 1); (3, 2); (4, 2); (5, 3); (6, 4); (7, 3)|]
Run Code Online (Sandbox Code Playgroud)
int
元组中的第一个向第二个报告的位置int
.
我可以很容易地映射它
let orgMap = Map.ofArray reporting
Run Code Online (Sandbox Code Playgroud)
从那里,我可以很容易地得到所有向2报告的整数列表
orgMap
|> Map.filter (fun _ key -> key = 2)
Run Code Online (Sandbox Code Playgroud)
返回
map [(3, 2); (4, 2)]
Run Code Online (Sandbox Code Playgroud)
然而,我真正希望看到的是整个结构,从2一直向下.例如,我想找到一种方法可以给我样本输出
map [(3, 2); (4, 2); (5, 3); (6, 4); (7, 3)]
Run Code Online (Sandbox Code Playgroud)
如果我正在找人2或
map [(5, 3); (7, 3)]
Run Code Online (Sandbox Code Playgroud)
如果我对人3感兴趣
我可以这样做吗?如果是这样,怎么样?是否有其他结构map
可以更好地实现这一目标?
在此先感谢您的帮助.
我正在使用VSCode和Ionide套件来在F#中创建一个控制台应用程序.我需要向应用程序添加单元测试,以便ctrl+shift+p FAKE: Build
在项目完成时,测试在构建过程中运行.
最初,test
目录不存在.我创建了test
dir并在该文件夹中创建了第二个项目TestProj.Test
(事后看来,我应该使用更多的描述性名称)用于测试目的.我将.fsproj
文件添加TestProj
到此项目中,以便我可以参考SimpleFunctions.fs
. NUnit.Framework
并FsUnit
添加到TestProj.Test
. Test.fs
包含两个简单的测试.
我故意创建了TestProj.Test
一个F#,library
因为我在SO上读到测试项目需要是一个库而不是一个控制台应用程序.
我将第build.fsx
9,31-37和47行添加到来自Ionide的默认文件中..但是,当我构建整个项目(即TestProj
)时,构建失败,我收到以下错误:
1) System.Exception: NUnit: cannot run tests (the assembly list is empty).
at Fake.NUnitSequential.NUnit(FSharpFunc`2 setParams, IEnumerable`1 assemblies) in C:\code\fake\src\app\FakeLib\UnitTest\NUnit\Sequential.fs:line 22
at FSI_0005.Build.clo@31-3.Invoke(Unit _arg3)
at Fake.TargetHelper.runSingleTarget(TargetTemplate`1 target) in C:\code\fake\src\app\FakeLib\TargetHelper.fs:line 492
Run Code Online (Sandbox Code Playgroud)
Sequential.fs
建议的第22行assemblies
是空的.
我究竟做错了什么?我应该如何设置 …