在MongoDB 10Gen的驱动程序上使用MongoDB shell命令

5

我希望能够通过MongoDb 10Gen的.net(c#)驱动程序简单地执行纯MongoDB查询。

例如,我想在驱动程序上使用以下命令:

db.people.update( { name:"Joe" }, { $inc: { n : 1 } } );

我不确定如何做到这一点。我对如何使用高级API类并不感兴趣。

2个回答

3

C#驱动程序(或任何其他驱动程序)不是用于“直接”运行mongo shell命令的。这就是shell的作用。您需要做的是将mongo shell命令转换为等效的C#语句。

如果您想运行mongo shell命令,请在mongo shell中运行它们。


C# 驱动程序已经不再构建 shell 查询并将其发送到 MongoDB 进行执行了吗?如果是这样,为什么驱动程序不让我执行 shell 查询? - AnyOne
驱动程序和服务器之间的通信是通过线协议进行的。请参见:http://www.mongodb.org/display/DOCS/Mongo+Wire+Protocol。即使是mongo shell在将命令发送到服务器之前也必须将mongo shell命令转换为线协议。 - Robert Stam

1

您可以使用流畅的查询接口在C#中构建查询。然后,可以使用Mongo集合上的Find方法将这些查询发送到数据库。例如:

var myDatabase = MongoDatabase.Create(connectionString);
var myCollection = database.GetCollection<MyType>("myCollectionNameInDB");
var myCollection = 
var myQuery = Query.EQ("name", "joe");
var someDataFromDB =  myCollection.Find(myQuery).FirstOrDefault();

查询也可以与更新一起使用。例如:

myCollection.Update(
                   myQuery,
                   Update.Replace(new MyType(){...}),
                   UpdateFlags.Upsert
              );

这将替换整个文档。如果需要更细粒度的控制,您可以使用Update API与FindAndModify方法相结合。例如:

var myUpdate = Update.Inc("n", 1);
var result = myCollection.FindAndModify(
                   myQuery,
                   SortBy.Descending("name");
                   myUpdate,
                   true // return new document
             );

请查看http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial以获取更多信息。


谢谢,但我被问到如何通过驱动程序执行纯查询。 - AnyOne
你尝试过在数据库对象上使用Eval方法吗? - Christian Horsdal
我已经尝试了Eval和RunCommand方法的几种不同方式,但仍然没有运气。 - AnyOne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接