标签: mongodb-.net-driver

为什么要在 MongoDB 中使用分片?

我们开始在工作中使用 MongoDB。到目前为止一切顺利,但我被要求评估 MongoDB 是否可以同时进行副本集和分片。经过一段时间的搜索后,我发现是的,可以,但除非确实必要,否则应该避免分片。

我在某处读到,对于 MongoDB,你确实需要有大量文档(例如数十亿)才能开始考虑分片,但是我无法理解这一点,因为这些“统计数据”中没有提到平均文档的组织和大小。

我们现在的标准是 RAM 应该大于完成请求所需的内存负载。

这让我想到了这些问题:MongoDB 和 SQL 服务器有哪些指令可以了解请求的 RAM 使用情况?

将 Sharding 与 MongoDB 结合使用的关键要求是什么?

当有人解释为什么他们将 Sharding 与 MongoDB 结合使用时,有人可以向我指出一篇文章、帖子或任何其他内容吗?

MongoDB 如何处理自动分片?

谢谢。

sql-server mongodb nosql mongodb-.net-driver

5
推荐指数
1
解决办法
696
查看次数

无密码使用mongoDB可以吗?

我计划安装 mongodb 和连接到同一台机器的 Windows 服务。该机器将处于隔离网络中。

当我们这样做的时候。无密码连接本地mongodb可以吗?

我规划的房产是这样的...

private MongoDatabase _db;
public MongoDatabase DB
{
    get
    {
        if (_db == null)
        {
            var mongoServer = MongoServer.Create();
            _db = mongoServer.GetDatabase("myStatistics");
        }
        return _db;
    }
}

private MongoCollection _collection;
public MongoCollection Collection
{
    get { return _collection ?? (_collection = DB.GetCollection("myStats")); }
}
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-.net-driver

5
推荐指数
1
解决办法
1076
查看次数

如何将元素推入 mongodb .net 驱动程序中的数组

我的数据如下所示

> db.people.findOne({"Name":"Jones"})
{
        "_id" : ObjectId("551dcbdc360fbd77107f8a37"),
        "Name" : "Jones",
        "Age" : 30,
        "Profession" : "Hacker"
}
Run Code Online (Sandbox Code Playgroud)

类定义为

class Person
{
  public ObjectId Id { get; set; }
  public string Name { get; set; }
  public int Age { get; set; }
  public List<string> Colors { get; set; }
  public List<Pet> Pets { get; set; }
}

class Pet
{
  public string Name { get; set; }
  public string Type { get; set; }
} 
Run Code Online (Sandbox Code Playgroud)

我尝试将 Pet 元素推入 Pets 字段 …

c# mongodb mongodb-.net-driver

5
推荐指数
1
解决办法
6671
查看次数

使用 InsertOneAsync (.NET Driver 2.0) 插入新文档

在旧的 .Net API 版本中:

MongoClient client = new MongoClient();
var server = client.GetServer();
var db = server.GetDatabase("foo");
var collection = db.GetCollection<BsonDocument>("bar");
var document = new BsonDocument { { "_id", 1 }, { "x", 2 } };
collection.Save(document);
Run Code Online (Sandbox Code Playgroud)

有效。

当我使用新的 .Net 驱动程序 2.0 时:

var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("foo");
var collection = database.GetCollection<BsonDocument>("bar");

var document = new BsonDocument { { "_id", 1 }, { "x", 2 } };
await collection.InsertOneAsync(document);
Run Code Online (Sandbox Code Playgroud)

错误:“await”运算符只能在异步方法中使用。考虑使用“async”修饰符标记此方法并将其返回类型更改为“Task”。

参考文献:

2.0 .NET 驱动程序简介

读写

我想问如何使用.Net …

c# asp.net mongodb mongodb-csharp-2.0 mongodb-.net-driver

5
推荐指数
1
解决办法
2万
查看次数

Mongodb C# 驱动程序 - 在插入时将 ID 复制到另一个字段

我正在使用 .Net - mongodb c# monngodb 驱动程序。插入文档时,我想将生成的[BsonId] ObjectId Id字段复制到文档中的另一个字段(复制值)

我可以运行 Insert,它将生成密钥,然后运行 ​​update 将密钥复制到另一个字段,但这将使数据库在(短暂的)一段时间内处于“软”状态。

是否可以“原子地”执行此操作,或者我使用 mongodb 是否错误?

.net c# mongodb nosql mongodb-.net-driver

5
推荐指数
1
解决办法
963
查看次数

更新 Mongodb 中的字典

我有一个存储以下数据的类:

public class User
{
    public ObjectId _id { get; set; }
    public string Name { get; set; }
    public string Pass { get; set; }
    public Dictionary<string, Tuple<string, string>> Quests { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

新用户的实例化如下:

await collection.InsertOneAsync(new User { Name = u, Pass = p, 
                     Quests = new Dictionary<string,Tuple<string,string>>() });
Run Code Online (Sandbox Code Playgroud)

我知道如何从创建的文档中查找和提取信息,但不知道如何推送和保存对文档的更改。大多数在线答案都是针对旧的 Mongodb C# 驱动程序,因此诸如Query或 之类的东西.save()不存在,或者我没有将正确的包包含到我的程序中。

我希望能够向词典添加和删除条目,然后保存对文档的更改。有什么建议么?

c# dictionary mongodb mongodb-.net-driver

5
推荐指数
1
解决办法
3449
查看次数

获取 MongoDB 集合中的前 10 个结果

我想在 MongoDb 查询中获得第一个前 10 个结果

为此我尝试了这样的事情

return _users.Collection.FindAll().Limit(10).ToList();
Run Code Online (Sandbox Code Playgroud)

但这不起作用,然后我根据大多数资源尝试了以下操作,但这也不起作用

return _users.Collection.Aggregate([{ "$limit": 10 }]).ToList();
Run Code Online (Sandbox Code Playgroud)

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

5
推荐指数
1
解决办法
2万
查看次数

在mono中使用c#驱动程序比较mongo集合的两个字段

我对 Mongodb 和 C# 驱动程序完全陌生。

开发是在 Ubuntu 14.04 上使用 Monodevelop 完成的,Mongodb 的版本是 3.2.10 :

目前我的代码有一个 POCO 如下:

public class User
{
    public String Name { get; set;}
    public DateTime LastModifiedAt { get; set;}
    public DateTime LastSyncedAt { get; set;}

     public User ()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

已经能够创建集合并添加用户。

如何查找 LastModifiedAt 时间戳大于 LastSyncedAt 时间戳的用户?进行了一些搜索,但未能找到答案。

任何建议都会有很大的帮助

谢谢

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

5
推荐指数
1
解决办法
3968
查看次数

使用 C# SDK 投影到另一种类型

我希望在使用 C# SDK 查询 MongoDB 时能够投影到另一种类型。

例如,下面我想使用 的构建器过滤器(或 LINQ 表达式)查询集合MyType我想将结果投影到MySubType

var mySubTypes = Database
    .GetCollection<MyType>("MyCollection")
    .Find(Builders<MyType>.Filter.AnyIn(x => x.Documents, documentId))
    .ProjectTo<MySubType>() // Project to another type??
    .ToList();
Run Code Online (Sandbox Code Playgroud)

人们可以想象MySubType它是 的子集MyType,用继承表示:

public class MyType : MySubType
{
    [BsonElement("documents")]
    public List<string> Documents { get; set; }
}

public class MySubType
{
    [BsonElement("name")]
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我为什么要这样做?

因为Documents数组非常大并且纯粹在数据库引擎内查询(即过滤)期间使用。检索和序列化该数组将是不必要的成本。

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

5
推荐指数
1
解决办法
2340
查看次数

如何将嵌套的 Document 反序列化为特定的类对象?

我是 MongoDb 的新手,我正在尝试将嵌套在父文档中的文档数组序列化为特定的类对象。

我的文档对象如下所示:

Project
{
    "_id" : ObjectId("589da20997b2ae4608c99173"),
    // ... additional fields
    "Products" : [ 
        { 
            "_id" : ObjectId("56971340f3a4990d2c199853"),
            "ProductId" : null,
            "Name" : null,
            "Description" : null,
            // ... quite a few more properties
            "Properties" : null 
        }
    ],
    "CreatorUserId" : LUUID("af955555-5555-5555-5555-f1fc4bb7cfae")
}
Run Code Online (Sandbox Code Playgroud)

所以基本上它是一个名为Project包含嵌套文档数组的文档Product

以下是当前课程的样子:

public class Project : BaseClasses {
    public ObjectId ParentCreatorUserIdProject { get; set; }  
    // ... additional Fields 
    public IEnumerable<IProjectItem> ProjectItems { get; set; } 
    //public IEnumerable<IProductDetails> Products { get; …
Run Code Online (Sandbox Code Playgroud)

c# mongodb mongodb-.net-driver

5
推荐指数
1
解决办法
3279
查看次数