如何在mongodb中改进这个查询代码

时间:2013-08-14 04:06:30

标签: mongodb mongodb-.net-driver

这是我的员工使用的

var client = new MongoClient(System.Configuration.ConfigurationManager.AppSettings["MongoDbServer"]);
var server = client.GetServer();
MongoDatabase db = server.GetDatabase("Edbert");
var collection = db.GetCollection("testInstagram");

var query = Query.And(Query.Not(Query.Or(Query.Size("PossibleInstagramIDs", 1), Query.Size("PossibleInstagramIDs", 0))),Query.EQ("InstagramID",BsonNull.Value));

我认为这部分很难看:

var query = Query.And(Query.Not(Query.Or(Query.Size("PossibleInstagramIDs", 1), Query.Size("PossibleInstagramIDs", 0))),Query.EQ("InstagramID",BsonNull.Value));

如果PossibleInstagramIDs的大小大于1,他试图将查询设置为返回true。

他应该做些什么?

1 个答案:

答案 0 :(得分:0)

我会通过创建TestInstagram类然后使用LINQ来强烈打印该集合。

您的TestInstagram课程将如下所示:

public class TestInstagram
{
    public ObjectId Id { get; set; }
    public IEnumerable<int> PossibleInstagramIDs { get; set; }
    public int InstagramID { get; set; }
}

这将允许您简单地查询如下:

var collection = _mongoDatabase.GetCollection<TestInstagram>("testInstagram");
collection.AsQueryable().Where(ti => ti.PossibleInstagramIDs.Count() > 1 && ti.InstagramID == null);