标签: mongodb-.net-driver

将mongo查询的输出重定向到csv文件

我使用MongoDB 2.2.2 for 32位Windows7机器.我在.js文件中有一个复杂的聚合查询.我需要在shell上执行此文件并将输出定向到CSV文件.我确保查询返回一个"扁平"json(没有嵌套键),因此它本身可以转换为一个整洁的csv.

我知道load()eval().eval()要求我将整个查询粘贴到shell中,只允许printjson()在脚本内部,而我需要csv.并且,第二种方式:load()..它在屏幕上打印输出,并再次以json格式打印.

Mongo有没有办法从json转换到csv?(我需要csv文件来准备数据上的图表).我在想:

1.要么mongo有一个内置命令,我现在找不到.
蒙哥不能帮我做; 我最多可以将json输出发送到一个文件,然后我需要将其转换为csv.
3. Mongo可以将json输出发送到临时集合,其内容可以很容易地转换mongoexported为csv格式.但我认为只有map-reduce查询支持输出集合.是对的吗?我需要它来进行聚合查询.

谢谢你的帮助 :)

mongodb mongodb-query mongodb-.net-driver

74
推荐指数
5
解决办法
10万
查看次数

将Enums存储为MongoDB中的字符串

有没有办法将枚举存储为字符串名称而不是序数值?

例:

想象一下,我有这个枚举:

public enum Gender
{
    Female,
    Male
}
Run Code Online (Sandbox Code Playgroud)

现在,如果有一些想象中的用户存在

...
Gender gender = Gender.Male;
...
Run Code Online (Sandbox Code Playgroud)

它将作为{..."Gender"存储在MongoDb数据库中:1 ...}

但我更喜欢这样的事情{......"性别":"男性"...}

这可能吗?自定义映射,反射技巧,等等.

我的上下文:我使用强类型集合而不是POCO(好吧,我标记AR并偶尔使用多态).我有一个工作单元形式的瘦数据访问抽象层.所以我没有序列化/反序列化每个对象,但我可以(并且确实)定义一些ClassMaps.我使用官方的MongoDb驱动程序+ fluent-mongodb.

c# mongodb mongodb-.net-driver

65
推荐指数
7
解决办法
2万
查看次数

使用C#的MongoDB GridFs,如何存储图像等文件?

我正在开发一个以mongodb作为我的后端的网络应用程序.我想让用户将图片上传到他们的个人资料,如链接个人资料照片.我正在使用带有MVC2的aspx页面,我读到GridFs库用于存储大型文件类型作为二进制文件.我到处寻找线索是如何完成的,但是mongodb没有任何关于C#api或GridFs C#的文档.我感到困惑和困惑,真的可以使用另一组大脑.

任何人都知道如何实际实现一个文件上传控制器,用于存储用户上传到mongodb集合中的图像?太感谢了!

我尝试过这种变化无济于事.

Database db = mongo.getDB("Blog");
GridFile file = new GridFile(db);
file.Create("image.jpg");

var images = db.GetCollection("images");
images.Insert(file.ToDocument());
Run Code Online (Sandbox Code Playgroud)

.net c# mongodb gridfs mongodb-.net-driver

62
推荐指数
3
解决办法
5万
查看次数

MongoDB连接的.NET最佳实践?

我最近一直在使用GitHub上的C#驱动程序玩MongoDB(它的速度非常快).在我正在测试的小单线程控制台应用程序中,一切正常.我可以在8秒内运行单线程添加1,000,000个文档(是的,百万个).如果我使用for循环范围之外的连接,我只能获得此性能.换句话说,我保持每个插入的连接打开,而不是连接每个插入.显然这是做作的.

我以为我会把它调到一个档位,看它是如何与多线程一起工作的.我这样做是因为我需要模拟一个包含多个并发请求的网站.我在15到50个线程之间旋转,在所有情况下仍然插入总共150,000个文档.如果我让线程运行,每个线程为每个插入操作创建一个新连接,性能就会停止.

显然,我需要找到一种共享,锁定或池连接的方法.这就是问题所在.连接到MongoDB的最佳做法是什么?连接是否应该在应用程序的生命周期内保持打开(每次操作都会有很长的延迟打开和关闭TCP连接)?

有没有人有MongoDB的任何现实世界或生产经验,特别是底层连接?

这是我使用为插入操作锁定的静态连接的线程示例.请提供可在Web环境中最大限度地提高性能和可靠性的建议!

private static Mongo _mongo;

private static void RunMongoThreaded()
{
    _mongo = new Mongo();
    _mongo.Connect();

    var threadFinishEvents = new List<EventWaitHandle>();

    for(var i = 0; i < 50; i++)
    {
        var threadFinish = new EventWaitHandle(false, EventResetMode.ManualReset);
        threadFinishEvents.Add(threadFinish);

        var thread = new Thread(delegate()
            {
                 RunMongoThread();
                 threadFinish.Set();
            });

        thread.Start();
    }

    WaitHandle.WaitAll(threadFinishEvents.ToArray());
    _mongo.Disconnect();
}

private static void RunMongoThread()
{
    for (var i = 0; i < 3000; i++)
    {
        var db = _mongo.getDB("Sample");
        var collection = db.GetCollection("Users");
        var user = …
Run Code Online (Sandbox Code Playgroud)

c# performance connection-pooling mongodb mongodb-.net-driver

60
推荐指数
3
解决办法
3万
查看次数

MongoDB C#驱动程序 - 忽略绑定上的字段

使用MongoDB和C#的FindOne()时,有没有办法忽略对象中找不到的字段?

EG,示例模型.

public class UserModel
{
    public ObjectId id { get; set; }
    public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我们还在MongoDB集合中存储密码,但不想将其绑定到上面的out对象.当我们这样做的时候,

  var query = Query<UserModel>.EQ(e => e.Email, model.Email);
  var entity = usersCollection.FindOne(query);
Run Code Online (Sandbox Code Playgroud)

我们收到以下错误

Element 'Password' does not match any field or property of class 
Run Code Online (Sandbox Code Playgroud)

反正有没有告诉Mongo忽略它与模型不匹配的字段?

.net c# mongodb mongodb-query mongodb-.net-driver

60
推荐指数
3
解决办法
3万
查看次数

如何替换mongodb文件中的子字符串

我在形式的集合ABC中有很多mongodb文档:

{
....
"URL":"www.abc.com/helloWorldt/..."
.....
}
Run Code Online (Sandbox Code Playgroud)

我想用helloWorld最终输出替换helloWorldt:

{
....
"URL":"www.abc.com/helloWorld/..."
.....
}
Run Code Online (Sandbox Code Playgroud)

我如何为集合ABC中的所有文档实现此目的

mongodb mongo-shell mongodb-.net-driver

59
推荐指数
6
解决办法
5万
查看次数

如何在C#中获取连接字符串中指定的Mongo数据库

我想连接到连接字符串中指定的数据库,而不是再次指定它GetDatabase.

例如,如果我有这样的连接字符串;

mongodb://localhost/mydb
Run Code Online (Sandbox Code Playgroud)

我希望能够db.GetCollection("mycollection")来自mydb.

这将允许在app.config文件中轻松配置数据库名称.

c# mongodb mongodb-.net-driver

55
推荐指数
4
解决办法
7万
查看次数

将字符串转换为MongoDB BsonDocument

我有一个JSON格式的长字符串,我想将其转换为BSONDocument以插入MongoDB数据库.我该如何进行转换?我正在使用官方的C#驱动程序.

c# mongodb mongodb-.net-driver

52
推荐指数
3
解决办法
4万
查看次数

截断一个集合

如何截断MongoDB中的集合或者是否有这样的东西?

现在我必须一次删除6个大型集合,我将停止服务器,删除数据库文件,然后重新创建数据库及其中的集合.有没有办法删除数据并保留集合原样?删除操作需要很长时间.我在馆藏中有数百万条.

mongodb mongodb-.net-driver

52
推荐指数
5
解决办法
6万
查看次数

如何使用官方c#驱动程序在MongoDB中使用Update.Set更新多个字段?

以下代码将允许我更新FirstName ="john"和LastName ="Doe"的电子邮件.如何在不使用Save()方法的情况下更新电子邮件和电话?

MongoDB.Driver.MongoServer _server = MongoDB.Driver.MongoServer.Create("mongodb://localhost");
MongoDB.Driver.MongoDatabase _dataBase = _server.GetDatabase("test");
MongoDB.Driver.MongoCollection<Person> _person = _dataBase.GetCollection<Person>("person");

//Creat new person and insert it into collection
ObjectId newId  = ObjectId.GenerateNewId();
Person newPerson = new Person();
newPerson.Id = newId.ToString();
newPerson.FirstName = "John";
newPerson.LastName = "Doe";
newPerson.Email = "john.doe@gmail.com";
newPerson.Phone = "8005551222";
_person.Insert(newPerson);

//Update phone and email for all record with firstname john and lastname doe
MongoDB.Driver.Builders.QueryComplete myQuery = MongoDB.Driver.Builders.Query.And(MongoDB.Driver.Builders.Query.EQ("FirstName", "John"),    MongoDB.Driver.Builders.Query.EQ("LastName", "Doe"));
MongoDB.Driver.Builders.UpdateBuilder update = MongoDB.Driver.Builders.Update.Set("Email", "jdoe@gmail.com");

_person.Update(myQuery, update);
Run Code Online (Sandbox Code Playgroud)

.net c# mongodb mongodb-.net-driver

42
推荐指数
4
解决办法
4万
查看次数