如何使用C#驱动程序将BsonArray添加到MongoDB中的BsonDocument?我想要一个像这样的结果
{
author: 'joe',
title : 'Yet another blog post',
text : 'Here is the text...',
tags : [ 'example', 'joe' ],
comments : [ { author: 'jim', comment: 'I disagree' },
{ author: 'nancy', comment: 'Good post' }
]
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用.NET Razor和mongodb的项目.我想做这样的事情:
@{
var feeds = DP.Database.GetCollection("feeds").FindAll();
}
<ul>
@foreach (dynamic feed in feeds)
{
<li>@feed.message - @feed.from.name</li>
}
</ul>
Run Code Online (Sandbox Code Playgroud)
但是,当前的mongodb C#驱动程序FindAll()返回不支持动态对象的BsonDocument集合.有人知道.NET 4动态支持的mongodb C#驱动程序吗?
非常感谢
我从Mongo的集合中得到了结果,结构与此相同
[DataContract]
public class Father
{
[BsonId]
[DataMember]
public MongoDB.Bson.ObjectId _id { get; set; }
[DataMember]
public string Id { get; set; }
[DataMember]
public List<Child> childs { get; set; }
}
[DataContract]
public class Child
{
[DataMember]
public string Id { get; set; }
[DataMember]
public int Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我尝试这个:
List<Father> f = result.ToList();
Run Code Online (Sandbox Code Playgroud)
它叫 Element 'Id' does not match any field or property of the class Model.Child
我认为它只是把'Id'作为别的东西.
我怎么处理它?谢谢
我正在尝试获取服务器中所有数据库的列表,并最终将它们打印出来(即使用它们的名称作为strings).使用以前版本的c#驱动程序,我可以调用它Server.GetDatabases(),但已被替换为ListDatabasesAsync().
返回值是一个IAsyncCursor<>,我不知道如何处理它.如何用这样的游标遍历数据库列表(或任何东西)?
我有很多复杂的查询,我有时希望直接检查Mongo以进行调试\ explain().使用较新的2.0+ c#驱动程序,我不知道该怎么做.在以前的版本中有一个叫做的东西IMongoQuery,这个有用.
一个简单的例子:
FilterDefinition<LalalaEvent> filter = Builders<LalalaEvent>.Filter
.Where(e => ids.Contains(e.Id) && e.Deleted != true );
Run Code Online (Sandbox Code Playgroud) 我想知道如何使用mongoDB和C#检查对象的存在.
我找到了一种方法,但是由于Any()方法,我不得不使用Linq,但是我想知道如果没有Linq可以做到这一点吗?
database.GetCollection<ApplicationViewModel>("Applications").Find(Query.EQ("Name", applicationName)).Any()
Run Code Online (Sandbox Code Playgroud)
多谢你们!
使用官方C#驱动程序向mongo db上传时遇到问题.
public abstract class AggregateRoot
{
/// <summary>
/// All mongoDb documents must have an id, we specify it here
/// </summary>
protected AggregateRoot()
{
Id = ObjectId.GenerateNewId();
}
[BsonId]
public ObjectId Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的实体已经拥有了id-s但我必须创建mongo特定的ID才能工作,因为集合中的所有文档都应该有一个.现在我在我的系统中收到一个新的实体,生成一个新的Mongo Id,我得到的mongo无法更改文件旧异常的_id.有一些解决方法吗?
让我来描述一下设计.将作为文档存储的所有实体都继承自AggregateRoot,其中包含id生成.每个子文档都自动生成了id,我对此没有任何问题.引入AggregateRoot中的id是为了在从MongoCollection到List检索数据时纠正问题,并且引入了生成,因此id-s不同.现在我们可以移动id生成来保存方法,因为更新的新实体有一个新的id生成.但这意味着团队中的每个开发人员都不能忘记在存储库中生成id-s,这是有风险的.如果可能的话,忽略id而不是从mongo映射会更好,而根本就没有AggregateRoot类
我发现官方MongoDB C#驱动程序的一些方法使用SafeMode并返回SafeModeResult.这是什么SafeMode以及如何使用它?很高兴看到一些用例 - 例如,一个用例的RemoveAll方法MongoCollection.
如何将整个MongoDB BsonDocument转换为字符串?
(我正在使用官方的C#驱动程序)
MongoClient我的c#console应用程序连接到MongoDBhttps://github.com/mongodb/mongo-csharp-driver/releases/tag/v2.0.0-rc0
我的代码
class Program
{
static void Main(string[] args)
{
const string connectionString = "mongodb://localhost:27017";
// Create a MongoClient object by using the connection string
var client = new MongoClient(connectionString);
//Use the MongoClient to access the server
var database = client.GetDatabase("test");
var collection = database.GetCollection<Entity>("entities");
var entity = new Entity { Name = "Tom" };
collection.InsertOneAsync(entity);
var id = entity._id;
}
}
public class Entity
{
public ObjectId _id { get; set; }
public string Name { …Run Code Online (Sandbox Code Playgroud)