使用LINQ

时间:2019-03-15 11:19:32

标签: c# mongodb linq

我有一个简单的类,它代表MongoDB文档中的字段

class Measurement
{
    public ObjectId id { get; set; }
    public int s { get; set; }
    public int[] p { get; set; }
    public int dt { get; set; }
    public int ml { get; set; }
}

我正在尝试使用

获取符合我的条件的文档
var collection = database.GetCollection<Measurement>(mongoCollectionName);
    var query = from a in collection.AsQueryable<Measurement>()
                where a.dt > 100
                select a;

删除条件后,我确实会收到所有文件,但没有条件。响应说没有匹配的文档,但是有(示例dt = 1538555)

查询看起来像这样{aggregate([{“ $ match”:{“ dt”:{“ $ gt”:100}}}]))}。 我使用此线程和mongodb文档的响应构建示例 MongoDB C# Aggregation with LINQ

我很感激能解决我的愚蠢错误

1 个答案:

答案 0 :(得分:0)

我不再直接使用c#驱动程序,所以我的解决方案是使用MongoDAL。

using System;
using System.Linq;
using MongoDAL;

namespace Example
{
    class Measurement : Entity
    {
        public int s { get; set; }
        public int[] p { get; set; }
        public int dt { get; set; }
        public int ml { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            new DB("measurements");

            var measurement1 = new Measurement
            {
                s = 10,
                ml = 20,
                dt = 100,
                p = new int[] { 1, 2, 3, 4, 5 }
            };

            var measurement2 = new Measurement
            {
                s = 11,
                ml = 22,
                dt = 200,
                p = new int[] { 1, 2, 3, 4, 5 }
            };

            measurement1.Save();
            measurement2.Save();

            var result = (from m in DB.Collection<Measurement>()
                          where m.dt > 100
                          select m).ToArray();

            Console.ReadKey();

        }
    }
}