在MongoDB Collection中添加一个条目

问题描述 投票:0回答:2

我无法弄清楚如何更新我的MongoDB集合中的条目。我看过C#驱动程序Docs,我想我非常仔细地关注了它们。 !谁能告诉我我做错了什么?

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; using MongoDB.Driver; using MongoDB.Driver.Linq; namespace Csharp_Linq { class Program { public class Book { // Fields public string title { get; set; } public string author { get; set; } public ObjectId id { get; set; } // Constructors public Book() { this.title = "some title"; this.author = "some author"; } public Book(string title, string author) { this.title = title; this.author = author; } } static void Main(string[] args) { // Connect to the server string connectionString = "mongodb://localhost"; MongoClient client = new MongoClient(connectionString); MongoServer server = client.GetServer(); // Get the database then the collection MongoDatabase database = server.GetDatabase("tutorial"); MongoCollection collection = database.GetCollection("books"); // Query the collection int count = (from book in collection.AsQueryable<Book>() select book) .Count(); string numBooks = String.Format("This collection has {0} books.", count); Console.WriteLine(numBooks); var query = from book in collection.AsQueryable<Book>() where book.author == "Ernest Hemingway" select book; foreach (var book in query) { string bookInfo = String.Format("{0} by {1}", book.title, book.author); Console.WriteLine(bookInfo); } // Insert new books Book scaryBook = new Book("Dr. Sleep", "Stephen King"); Book[] batch = { new Book(), scaryBook }; collection.InsertBatch(batch); // Update default book var query2 = from book in collection.AsQueryable<Book>() where book.title == "some title" && book.author == "some author" select book; var update = new UpdateDocument { { "$set", new BsonDocument("title", "War and Peace") } }; BsonDocument updatedBook = collection.Update(query2, update); Console.ReadLine(); } } }

我对更新方法实际返回bsondocument感到有些惊讶。 为什么这样做? 我尝试使用示例所示的更新对象:

MongoCollection<BsonDocument> books;
var query = Query.And(
    Query.EQ("author", "Kurt Vonnegut"),
    Query.EQ("title", "Cats Craddle")
);
var update = Update.Set("title", "Cat's Cradle");
BsonDocument updatedBook = books.Update(query, update);

该对象仍然存在吗? 每当我将其输入Visual Studio时,我都会出现一个错误,说该对象不在名称空间中。

首先必须包括
using MongoDB.Driver.Builders;

然后,我不得不将Linq查询投入到Mongo查询中。 这是结果代码:
c# mongodb
2个回答
2
投票
// Update default book var query2 = from book in collection.AsQueryable<Book>() where book.title == "some title" && book.author == "some author" select book; // Cast linq query to Mongo query var mongoQuery = ((MongoQueryable<Book>)query2).GetMongoQuery(); var update = new UpdateDocument { { "$set", new BsonDocument("title", "War and Peace") } }; collection.Update(mongoQuery, update);

要进行一些研究以使所有的作品适合!

    

更新对象是mongodb.driver.builders名称空间的一部分,尽管从教程中并不明显。 

认为问题是您的查询。 除非您有一本书

book.title == "some title" && book.author == "some author"

0
投票
using MongoDB.Driver.Builders;

您可以通过以下内容更新条目。服用物品添加到购物车的情况

db.carts.update({ _id: "the_users_session_id", status:'active' }, { $set: { modified_on: ISODate() }, $push: { products: { sku: "111445GB3", quantity: 1, title: "Simsong One mobile phone", price:1000 } } });
请参考以下内容以下更多信息

http://advancedmongodb.blogspot.in/


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.