Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用mongodb在c#.net应用程序中插入、更新、删除_C#_Mongodb_Mongodb Query - Fatal编程技术网

如何使用mongodb在c#.net应用程序中插入、更新、删除

如何使用mongodb在c#.net应用程序中插入、更新、删除,c#,mongodb,mongodb-query,C#,Mongodb,Mongodb Query,我想知道如何使用带有新api的mongodb插入、删除、更新和搜索。 这是我的插入查询。我想用这个新api编写更新和删除 //插入查询 string connectionString = "mongodb://127.0.0.1:27017"; MongoClient client0 = new MongoClient(connectionString); IMongoDatabase mydatabase = client0.GetDatabas

我想知道如何使用带有新api的mongodb插入、删除、更新和搜索。 这是我的插入查询。我想用这个新api编写更新和删除

//插入查询

string connectionString = "mongodb://127.0.0.1:27017";
            MongoClient client0 = new MongoClient(connectionString);
            IMongoDatabase mydatabase = client0.GetDatabase("mydb");
            IMongoCollection<user_data> mycollection = mydatabase.GetCollection<user_data>("testcollection");
            mycollection.InsertOne(new user_data { first_name = txtFirstName.Text, last_name = txtLastName.Text, age = txtAge.Text, location = txtLocation.Text });
            {
                MessageBox.Show("Saved Successfully!");
            }
字符串连接字符串=”mongodb://127.0.0.1:27017";
MongoClient客户端0=新的MongoClient(connectionString);
IMongoDatabase mydatabase=client0.GetDatabase(“mydb”);
IMongoCollection mycollection=mydatabase.GetCollection(“testcollection”);
mycollection.InsertOne(新用户\u数据{first\u name=txtFirstName.Text,last\u name=txtLastName.Text,age=txtAge.Text,location=txtLocation.Text});
{
MessageBox.Show(“保存成功!”);
}

我同意Csharp驱动程序文档并不总是清晰或最新的

以下是我的实现:

 public class MongoRepository
{
    const string DB_NAME = "dbname";
    public const string HOST = "serveradress";
    const string CONNECT_STRING = "connectionstring";
    private IMongoClient _client;
    private IMongoDatabase _db {

        get { return this._client.GetDatabase(DB_NAME); }
    }
    public MongoRepository()
    {
        _client = new MongoClient(CONNECT_STRING);
    }
    //Add a BSON document from a json string
    public void Add(string json, string collectionName)
    {
        var document = BsonSerializer.Deserialize<BsonDocument>(json);
        var collection = _db.GetCollection<BsonDocument>(collectionName);
        collection.InsertOne(document);
    }

    //Add an item of the given type 
    public void Add<T>(T item) where T : class, new()
    {
        _db.GetCollection<T>(typeof(T).Name).InsertOne(item);

    }
    public async Task UpdateDocument<T>(ObjectId Id, T item )
    {
        var startTime = DateTime.UtcNow;
        try
        {
            var bsonWriter = new BsonDocumentWriter(new BsonDocument(), BsonDocumentWriterSettings.Defaults);
            BsonSerializer.Serialize<GlobalModel_Root>(bsonWriter, GlobalModel.rootGM);
            var doc = bsonWriter.Document;
            var collection = _db.GetCollection<BsonDocument>(typeof(T).Name);
            var filter = Builders<BsonDocument>.Filter.Eq("_id", Id);
            var entity = collection.Find(filter).FirstOrDefault();
            using (var timeoutCancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(60)))
            {
                await collection.ReplaceOneAsync(filter, doc, null, timeoutCancellationTokenSource.Token);
            }
        }
        catch (OperationCanceledException ex)
        {
            var endTime = DateTime.UtcNow;
            var elapsed = endTime - startTime;
            Console.WriteLine("Operation was cancelled after {0} seconds.", elapsed.TotalSeconds);
        }   
    }
    public void Delete<T>(T item) where T : class, new()
    {
        //WorkAround for DeleteOne parameter
        ObjectFilterDefinition<T> filter = new ObjectFilterDefinition<T>(item);
        // Remove the object.
        _db.GetCollection<T>(typeof(T).Name).FindOneAndDelete(filter);
    }
}
public类MongoRepository
{
常量字符串DB_NAME=“dbname”;
public const string HOST=“serveraddress”;
const string CONNECT\u string=“connectionstring”;
私人IMongoClient(用户);;
专用数据库{
获取{返回此。_client.GetDatabase(DB_NAME);}
}
公共MongoRepository()
{
_客户端=新的MongoClient(连接字符串);
}
//从json字符串添加BSON文档
public void Add(字符串json、字符串collectionName)
{
var document=BsonSerializer.Deserialize(json);
var collection=\u db.GetCollection(collectionName);
收藏.插入器(文件);
}
//添加给定类型的项
公共作废添加(T项),其中T:class,new()
{
_db.GetCollection(typeof(T).Name).InsertOne(item);
}
公共异步任务更新文档(ObjectId,T项)
{
var startTime=DateTime.UtcNow;
尝试
{
var bsonWriter=new BsonDocumentWriter(new BsonDocument(),BsonDocumentWriterSettings.Defaults);
序列化(bsonWriter,GlobalModel.rootGM);
var doc=bsonWriter.Document;
var collection=_db.GetCollection(typeof(T).Name);
var filter=Builders.filter.Eq(“\u id”,id);
var entity=collection.Find(filter.FirstOrDefault();
使用(var timeoutCancellationTokenSource=new CancellationTokenSource(TimeSpan.FromSeconds(60)))
{
wait collection.ReplaceOneAsync(filter,doc,null,timeoutCancellationTokenSource.Token);
}
}
捕捉(操作取消例外)
{
var endTime=DateTime.UtcNow;
var已用时间=结束时间-开始时间;
WriteLine(“操作在{0}秒后取消。”,已过.TotalSeconds);
}   
}
公共作废删除(T项),其中T:class,new()
{
//DeleteOne参数的解决方法
ObjectFilterDefinition筛选器=新的ObjectFilterDefinition(项);
//移除该对象。
_db.GetCollection(typeof(T).Name.FindOneAndDelete(filter);
}
}
,请使用搜索功能。