标签: mongodb-.net-driver

使用C#将嵌套文档插入MongoDB

我试图使用C#将嵌套文档插入MongoDB.我有一个名为类别的集合.在该集合中,必须存在具有2个数组,一个命名类别和一个命名标准的文档.在这些数组中必须存在具有自己的ID的新文档,这些ID也包含上面列出的相同名称的数组.以下是我到目前为止的情况,但我不确定如何继续.如果您查看代码我想要做的是添加嵌套在categories文档中的categories数组下的"namingConventions"文档,但是namingConventions也必须具有唯一的ID.

在这一点上,我不确定我是否已经以最好的方式做到了这一点,所以我对这一切都有任何建议.

namespace ClassLibrary1
{
using MongoDB.Bson;
using MongoDB.Driver;
public class Class1
{
       public void test()
        {
            string connectionString = "mongodb://localhost";
            MongoServer server = MongoServer.Create(connectionString);
            MongoDatabase standards = server.GetDatabase("Standards");
            MongoCollection<BsonDocument> categories = standards.GetCollection<BsonDocument>("catagories");

            BsonDocument[] batch = {
                                       new BsonDocument { { "categories", new BsonArray {} },
                                                        { "standards", new BsonArray { } }  },
                                       new BsonDocument { { "catagories", new BsonArray { } },
                                                        { "standards", new BsonArray { } }  },
                                   };
            categories.InsertBatch(batch);

            ((BsonArray)batch[0]["categories"]).Add(batch[1]);
            categories.Save(batch[0]);           
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为清楚起见,这就是我需要的: …

mongodb mongodb-.net-driver

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

使用c#Driver将linq Expression <>转换为IMongoQuery

给出一个;

Expression<Func<T, bool>> criteria;
Run Code Online (Sandbox Code Playgroud)

是否有可能将其转换为IMongoQuery 与驱动程序?

看起来它可能在某个地方的QueryBuilder中,但我看不到它.

mongodb mongodb-.net-driver

3
推荐指数
1
解决办法
4356
查看次数

使用C#驱动程序它们是复制和复制MongoDB集合的更好方法吗?

我有多个MongoDB服务器用于开发,登台和生产,我想从Dev-> Staging and Staging-> Live自动化一些部署过程.手动复制集合意味着使用相当神奇的MongoVUE工具(http://www.mongovue.com/),但显然这不是自动化的理想解决方案!

所以在C#Driver中,有没有办法在同一台服务器上复制一个集合?有没有办法将整个集合(索引完整)复制到另一台服务器?

我已经尝试循环收集集合,从服务器A检索文档然后将它们插入服务器B.这种方法感觉笨拙,冗长且容易出错.有没有更好的办法?

谢谢!

c# mongodb mongodb-.net-driver

3
推荐指数
1
解决办法
1684
查看次数

MongoDB C#驱动程序MongoCredential对象

MongoDB驱动程序的文档似乎与从NuGet中提取的实际驱动程序不同.

更具体地说,记录的"MongoCredentials"(复数)不存在,但只有"MongoCredential"(单数).此外,MongoServer.GetDatabase似乎没有接受MongoCredential的构造函数,只有MongoDatabaseSettings(以及命名数据库的字符串),并且我没有看到明显的方式为MongoDatabaseSettings对象提供MongoCredential对象.

我没有在Google上找到我在驱动程序中找到的对象的任何示例,只有那些与(过时的?)官方文档一致的对象.

我正在使用的驱动程序(在NuGet包管理器中)被称为"官方MongoDB C#驱动程序".

总结一下:如何在C#驱动程序中实际提供凭据?

c# mongodb mongodb-.net-driver

3
推荐指数
1
解决办法
3543
查看次数

Bson数组中的字符串列表

我使用的是MongoDb 2.4.9版本.当我尝试将字符串列表转换为Bson数组时,我最终会出现以下错误:

BsonArray bArray = new BsonArray();
foreach (var term in termMonitorIds)
{
    bArray.Add(term.ToBson());
}
Run Code Online (Sandbox Code Playgroud)

'/'应用程序中的服务器错误.

String值无法写入BSON文档的根级别.

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.InvalidOperationException:无法将String值写入BSON文档的根级别.

编辑

当我在下面的LINQ查询中使用它时:

entities =
                    (from e in this.collection.AsQueryable<SocialRecord>()
                     where sources.Contains(e.SocialType) && (e.DateCreated >= fr) && (e.DateCreated <= to) && e.TermMonitorIds.Any(X=> bArray.Contains(X)) && e.IsExactMatch == isInstagramExactMatch
                     select e)
                    .Take(5000)
                    .ToList();
Run Code Online (Sandbox Code Playgroud)

结果值不能为空.参数名称:名称.仅当我将bArray添加到查询时才会出现此错误消息.

.net c# linq mongodb mongodb-.net-driver

3
推荐指数
1
解决办法
8035
查看次数

C#Mongo FirstOrDefaultAsync挂起

使用2.0驱动程序,以下代码有时会挂起并永远不会返回.

public async Task<T> GetFirst(FilterDefinition<T> query)
{
    return await GetCollection.Find(query).FirstOrDefaultAsync();
}
Run Code Online (Sandbox Code Playgroud)

如果我首次亮相并在回程线上设置一个断点,一切都会恢复正常.在shell中运行的查询是这样的:

db.Customers.find({"Name" : /test$/i})
Run Code Online (Sandbox Code Playgroud)

.net c# mongodb async-await mongodb-.net-driver

3
推荐指数
1
解决办法
2093
查看次数

使用mongodb csharp驱动程序2.0.0进行索引提示

我正在从mongodb csharp驱动程序1.10.0迁移到2.0.0.我使用的其中一个集合非常大,必须使用不同的过滤器属性来完成许多查询.这就是我依赖一些索引提示语句的原因.使用v1.10驱动程序看起来像

 myCollection.Find(query).SetHint("myIndexName");
Run Code Online (Sandbox Code Playgroud)

我搜索了v2驱动程序api但是这个提示方法似乎在v2驱动程序中完全删除了.还有其他选择吗?我该如何使用v2驱动程序进行索引提示?

mongodb mongodb-.net-driver

3
推荐指数
1
解决办法
1309
查看次数

MongoDb c#driver 2.0 BsonNull用法

isDeleted NullableProfile课堂上有财产.

Builders<Profile>.Filter.Eq(p => p.IsDeleted, BsonNull.Value)
Run Code Online (Sandbox Code Playgroud)

但是下面的代码引发了下一个编译错误:

Error 11    Cannot convert lambda expression to type 
'MongoDB.Driver.FieldDefinition<MongoDB.DataTypes.Profile,MongoDB.Bson.BsonNull>' 
because it is not a delegate type   
Run Code Online (Sandbox Code Playgroud)

如何实现空检查?

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

3
推荐指数
1
解决办法
970
查看次数

将POCO模型转换为MongoDB的Bson格式

以下是有关我的开发环境的信息:

Microsoft Visual Studio社区2015

.NET Framework 4.6

ASP.NET MVC程序集System.Web.Mvc Version = 5.2.3.0

MongoDB.Driver 2.0.1.27

Mongodb 3.0.6

在我的C#应用​​程序中,我有以下代码来检索MongoDB数据库引用:

 public class MongoDBConnectionManager
 {

     public IMongoDatabase getMongoDB() {

            var client = new MongoClient("mongodb://localhost:27017");
            IMongoDatabase iMgDb = client.GetDatabase("foo");
            IMongoCollection<BsonDocument> UserDetails = 
            iMgDb.GetCollection<BsonDocument>("Users");
            return iMgDb;
     } // end of public IMongoDatabase getMongoDB()

  } // end of public class MongoDBConnectionManager
Run Code Online (Sandbox Code Playgroud)

以下是代表用户业务实体的POCO类:

 using MongoDB.Bson.Serialization.Attributes;

 public class UserModel
 {

    public object _id { get; set; } //MongoDb uses this field as identity.

   [BsonId]
   public int ID { get; …
Run Code Online (Sandbox Code Playgroud)

c# annotations mongodb bson mongodb-.net-driver

3
推荐指数
1
解决办法
3813
查看次数

使用在Linux上运行的.NET Core时,连接到MongoDB失败

我正在使用ASP.NET Core 2.0构建一个网站(仅在一个月前从1.1升级).MongoDB也由AWS上的Mongo Atlas托管.这个MongoDB实例有3个副本集,需要SSL才能连接,并且已设置可以从任何IP访问.

它在我的机器(Windows 10 x64)和AWS(Windows Server 2016)上运行良好.

我尝试在Linux机器上部署它,我使用apt dotnet-runtime-2.0.0在Ubuntu Server 16.04上安装,然后我尝试运行我的网站,并得到以下错误(出于安全原因,我隐藏了确切的服务器域名)

System.TimeoutException: A timeout occured after 30000ms selecting a server using CompositeServerSelector{ Selectors = WritableServerSelector, LatencyLimitingServerSelector{ AllowedLatencyRange = 00:00:00.0150000 } }. Client view of cluster state is { ClusterId : "1", ConnectionMode : "ReplicaSet", Type : "ReplicaSet", State : "Disconnected", Servers : [{ ServerId: "{ ClusterId : 1, EndPoint : "Unspecified/*****-shard-00-00-*****.mongodb.net:27017" }", EndPoint: "Unspecified/*****-shard-00-00-*****.mongodb.net:27017", State: "Disconnected", Type: "Unknown", HeartbeatException: "MongoDB.Driver.MongoConnectionException: An exception occurred while opening a connection …
Run Code Online (Sandbox Code Playgroud)

.net mongodb .net-core mongodb-.net-driver asp.net-core

3
推荐指数
1
解决办法
1147
查看次数