2017-01-17 1 views
-1
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using MongoDB.Bson; 
using MongoDB.Driver; 
using MongoDB.Driver.Core; 
using MongoDB.Driver.Builders; 

namespace ConsoleApplication1 
{ 
    class container 
    { 
     public string _Id { get; set; } 
     public string Node { get; set; } 
     public int SignalSTR { get; set; } 
     public float Battery { get; set; } 
     public float CEL { get; set; } 
     public float WT { get; set; } 
     public string OnlineSTAT { get; set; } 
     public string FirmVER { get; set; } 
     public Int64 Timestamp { get; set; } 

    } 

    class Program 
    { 
     static void Main(string[] args) 

     { 
      CallMain(args).Wait(); 
      Console.ReadLine(); 
     } 
     static async Task CallMain(string[] args) 
     { 
      var connectionString = "mongodb://localhost:27017"; 
      var client = new MongoClient(connectionString); 
      //var server = client.GetServer(); 
      var database = client.GetDatabase("test"); 
      //var collection = database.GetCollection<Entity>("entities"); 
      var collection = database.GetCollection<BsonDocument>("container"); 
      var builder = Builders<BsonDocument>.Filter; 
      var filt = builder.Eq("Node", "001_Iron_Nail") & builder.Eq("WT", "4.3"); 



      /* Method 1 
      using (var cursor = await collection.Find(new BsonDocument()).ToCursorAsync()) 
      { 
       while (await cursor.MoveNextAsync()) 
       { 
        foreach (var doc in cursor.Current) 
        { 
         Console.WriteLine(doc); 
        } 
       } 
      } */ 

      // Method 2 
      //var list = await collection.Find(filt).ToListAsync(); 

      var list = await collection.Find(filt).ToListAsync(); 
      foreach (var dox in list) 
      { 
       Console.WriteLine(dox); 
      } 

      // Method 3 
      // await collection.Find(new BsonDocument()).ForEachAsync(X => Console.WriteLine(X)); 

     } 
    } 
} 

위의 코드는 일부 '조건'을 필터링하여 '테스트'데이터베이스에서 '컨테이너'라는 컬렉션의 모든 데이터를 표시 할 수 있습니다. 내가 선택한 밸류의 일부를 프린트하기 위해 어떻게해야 하는지를 묻고 싶습니다. 예를 들면.데이터와 쇼를 하나만 선택하려면 어떻게해야합니까?

Battery 3.5 
Battery 3.6 
Battery 3.7   
+0

다음과 같이하십시오 :'collection.Find (filt) .Select (x => new {Battery = x.Battery})' –

+5

게시물을 파손하지 마십시오. – Glorfindel

답변

0
var list = await collection.Find(filt).ToListAsync(); 
for (int ii=0; ii<list.Count; ii++) 
{ 
    Console.WriteLine("Battery " + list[ii].Battery); 
} 
0

이 같은 출력 할 수 있습니다 : 당신은 배터리 목록을 얻을 것이다

Console.WriteLine(string.Format("{0} {1}", dox["Node"].ToString(), dox["WT"].ToString()); 
0

: 당신이 모든을

collection.Find(filt).Project(x => new {x.Battery}).ToList(); 

대안을 얻을 수 난 그냥 배터리가 원하는 mongo의 데이터를 필터링하여 클라이언트에 필터링합니다.

collection.Find(filt).ToEnumerable().Select(x => x.Battery); 
관련 문제