2011-12-13 88 views
0

我使用MongoDB的对我的C锋利的项目,而不是MySQL的,现在我想用象SELECT * FROM学生,在(名称为空或名称=“XXX”)和(SNO为空或SnO = 10),如何我可以在MongoDB中构建这个查询吗?如何使用mongo数据库查询?

感谢, @dinnu。

+0

有你建立MongoDB的JSON字符串的查询问题,或者你不知道如何使用C#客户做呢? – hellectronic

+1

我我不知道如何用C#客户 – user483886

+0

做我不想在这里肛门之一,但不是这只是谷歌被回答搜索了。 SO不应该用于“首次在谷歌上”这类问题。 –

回答

1

这应该让你开始:

var mongoServer = MongoDB.Driver.MongoServer.Create("mongodb://localhost?safe=true"); 
var mongoDatabase = mongoServer.GetDatabase("test"); 
var mongoCollection = mongoDatabase.GetCollection<TModel>("Test"); 

var cursor = mongoCollection.Find(Query.And(
    Query.Or(
     Query.EQ("Name", "xxx"), 
     Query.EQ("Name", null)), 
    Query.Or(
     Query.EQ("sno", 10)), 
     Query.EQ("sno", null))); 

哪里TModel是你想要从分贝反序列化类的类型。现在你可以使用鼠标来遍历该查询的结果,例如:

var someModel = cursor.FirstOrDefault(); 
+0

上面的查询工作不适合我......它给出错误的输出@ mnemosym – user483886

+0

以何种方式是输出错了吗? – mnemosyn

+0

如果名称采用空,查询获得所有表收集 – user483886

0

看看流利蒙戈(https://github.com/craiggwilson/fluent-mongo)。它增加了Linq在官方10gen驱动程序之上。到目前为止,我发现使用它是一种很好的体验。它可以通过Nuget或GitHub获得。