标签: mongodb-.net-driver

如何通过.NET在MongoDB中创建索引

我使用MongoDB C#驱动程序以编程方式创建了一个新的文档集合.

此时我想以编程方式创建和构建索引.我怎样才能做到这一点?

.net c# indexing mongodb mongodb-.net-driver

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

使用官方C#驱动程序在Mongo DB中进行升级

在mongodb的官方文档中,他们提到了upserts,所以编写一个upsert命令而不是:

if (_campaignRepo.Exists(camp))
{
    _campaignRepo.DeleteByIdAndSystemId(camp);
}

_campaignRepo.Save(camp);
Run Code Online (Sandbox Code Playgroud)

如果可能的话,可以在db级别实现该逻辑的东西.那么如果有一个upsert的方法是什么?

c# mongodb mongodb-.net-driver

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

如何在mongodb中找到最小值

你怎么做相当于

SELECT 
  MIN(Id) AS MinId
FROM
  Table
Run Code Online (Sandbox Code Playgroud)

在MongoDB中.看起来我将不得不使用MapReduce,但我找不到任何显示如何执行此操作的示例.

谢谢.

mongodb mongodb-.net-driver

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

MongoDB和C#:不区分大小写的搜索

我正在使用MongoDBMongoDBC#驱动程序.

我最近发现MongoDB中的所有查询都区分大小写.如何进行不区分大小写的搜索?

我找到了一种方法:

Query.Matches(
    "FirstName", 
    BsonRegularExpression.Create(new Regex(searchKey,RegexOptions.IgnoreCase)));
Run Code Online (Sandbox Code Playgroud)

.net c# case-insensitive mongodb mongodb-.net-driver

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

MongoDB C#驱动程序:忽略插入时的属性

我正在使用官方MongoDB C#Drive v0.9.1.26831,但我想知道给定一个POCO类,无论如何都要忽略某些属性插入.

例如,我有以下类:

public class GroceryList
{
    public string Name { get; set; }
    public FacebookList Owner { get; set; }
    public bool IsOwner { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让IsOwner在插入GroceryList对象时不插入?基本上,我从数据库中获取对象,然后在应用程序层中设置IsOwner属性,然后将其返回到控制器,然后将对象映射到视图模型.

希望我的问题有道理.谢谢!

c# mongodb mongodb-.net-driver

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

Mongodb - 使用c#驱动程序包含或排除某些元素

我如何将此mongo查询转换为C#中的Query.EQ语句?

db.users.find({name: 'Bob'}, {'_id': 1});
Run Code Online (Sandbox Code Playgroud)

换句话说,我不希望一切都返回到C# - 只需要我需要的一个元素,即_id.与往常一样,Mongo C#驱动程序教程没有帮助.

c# mongodb mongodb-.net-driver

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

如何将BsonDocument对象反序列化回类

从服务器获取后,如何将BsonDocument对象反序列化回类?

QueryDocument _document = new QueryDocument("key", "value");
MongoCursor<BsonDocument> _documentsReturned = _collection.FindAs<BsonDocument>(_document);

foreach (BsonDocument _document1 in _documentsReturned)
{
    //deserialize _document1
    //?
}
Run Code Online (Sandbox Code Playgroud)

我是否使用BsonReader进行反序列化?

c# mongodb mongodb-.net-driver

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

使用'ObjectId'查询MongoDB

我已经将documents插入MongoDB而没有id.我想通过搜索默认分配的MongoDBObjectId来检索它们.

这是我的尝试 -

var query_id = Query.EQ("_id", "50ed4e7d5baffd13a44d0153");
var entity = dbCollection.FindOne(query_id);
return entity.ToString();
Run Code Online (Sandbox Code Playgroud)

我得到以下错误 -

发生了'System.NullReferenceException'类型的第一次机会异常

问题是什么?

.net c# mongodb mongodb-.net-driver

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

MongoDB C#Driver 2.0 - 更新文档

我目前正在将我的代码升级到MongoDB C#驱动程序2.0,并且我在升级代码以更新文档时遇到问题.

使用旧版本,我能够做到这样的事情:

MyType myObject; // passed in 
var collection = _database.GetCollection<MyType>("myTypes");
var result = collection.Save(myObject);
Run Code Online (Sandbox Code Playgroud)

我很难在新版本中找到一种方法.我找到了一些更新单个字段的例子

var filter = Builders<MyType>.Filter.Eq(s => s.Id, id);
var update = Builders<MyType>.Update.Set(s => s.Description, description);
var result = await collection.UpdateOneAsync(filter, update);
Run Code Online (Sandbox Code Playgroud)

我想用旧方法更新所有字段,方法是Save.

有任何想法吗 ?

非常感谢

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

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

mongodb和C#的工作单位

我知道MongoDB不应该支持工作单元等.但我认为实现只存储意图(类似于标准)然后将它们提交给数据库的存储库会很好.否则,在存储库中的每个方法中,您都必须创建与DB的连接,然后将其关闭.如果我们将连接放置在某个BaseRepository类中的DB,那么我们将我们的存储库绑定到具体的数据库,并且测试存储库非常困难,以测试解决存储库的IoC.

在MongoDB中创建会话是个坏主意吗?有没有办法将连接逻辑与存储库分开?

以下是Rob Conery的一些代码.在每次请求时总是连接到您的数据库是一个好主意吗?什么是最佳做法?

还有一件事.想象一下,我想为集合提供索引.以前我在构造函数中做过,但是使用Rob的方法,这似乎不符合逻辑.

 using Norm;
    using Norm.Responses;
    using Norm.Collections;
    using Norm.Linq;

    public class MongoSession {

        private string _connectionString;

        public MongoSession() {
            //set this connection as you need. This is left here as an example, but you could, if you wanted,
            _connectionString = "mongodb://127.0.0.1/MyDatabase?strict=false";
        }

        public void Delete<T>(System.Linq.Expressions.Expression<Func<T, bool>> expression) where T : class, new() {
            //not efficient, NoRM should do this in a way that sends a single command to MongoDB.
            var items = All<T>().Where(expression);
            foreach (T item …
Run Code Online (Sandbox Code Playgroud)

c# mongodb mongodb-.net-driver

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