Mongodb使用
到目前为止,断断续续学习了Mongo有几个月了,为避免遗忘,在这记录一下
学习文档:
https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/ 官方文档mongodb
http://mongodb.github.io/mongo-csharp-driver/2.4/reference/driver/crud/linq/ C#驱动
https://docs.mongodb.com/manual/reference/sql-comparison/ SQL转Mongogb
Mongodb数据库使用:
-------插入数据-------------- db.Test.insert({ "cdata" : "2020/5/12 15:41:38", "ppid" : "L0194211N0011222", "PN" : "008000013634", "SN" : "PA01QMA01-SD-R", "result" : "PASS", "group" : "HLEE", "Data" : [ { "RSSI" : "1234", "A" : "1.7", "ProductType" : "QSFP28 SR4" } ] }) db.getCollection('Firware').find({"ppid":"L0194211N0011222","PN":"008000013634"},{"ppid":1,"PN":1,"SN":1}) ------------查询数据总数-------------- db.getCollection('Test').find({}).count() ------------查询包含此条记录的整个文档-------------- db.getCollection('Test').find({"Result":"PASS","Data.InsideName":"TDD11"},{"PN":1,"SN":1,"Data.InsideName":1}) ------------查询包含此条记录的文档的单个组数据-------------- db.Test.aggregate([ {"$unwind":"$Data"},{"$unwind":"$Data.Type"}, {"$match":{"Data.InsideName":"TDD11","Data.Type.value":"92.84"}}, {"$project":{"PN":1,"Data.Type.value":1,"Data.InsideName":1}}]) (Gt:大于,Lt:小于) ------------查询满足其中一个条件的文档的单个组数据-------------- db.Test.aggregate([ {"$unwind":"$Data"},{"$unwind":"$Data.Type"}, {"$match":{$or:[{"Data.InsideName":"TDD11","Data.Type.value":"92.57"}, {"Data.InsideName":"T33","Data.Type.value":"53.99"}]}}, ]) ------------查询满足此条件的数据个数-------------- db.Test.aggregate([ {"$unwind":"$Data"},{"$unwind":"$Data.Type"}, {"$match":{$or:[{"Data.InsideName":"TDD11","Data.Type.value":"92.57"}, {"Data.InsideName":"T33","Data.Type.value":"53.99"}]}}, {"$group": {_id: {}, count: { $sum: 1 } }}, {"$project":{"count":1,"_id":0}} ]) ------------联表查询-------------- db.EEPROM.aggregate([ { "$match": { "ppid": "L0194211N0011222" } }, { "$lookup": { "localField": "ppid", "from": "Test", "foreignField": "ppid", "as": "Test" } }, { "$unwind": "$Test" }, { "$lookup": { "localField": "ppid", "from": "TRX", "foreignField": "ppid", "as": "TRX" } }, { "$unwind": "$TRX" }, { "$sort": { "date": 1 } }, { "$limit": 1 }, {"$project":{"ppid":1,"Data.Channel":1,"Test.Data.RSSI":1,"TRX.Data.TXP1":1}} ]);
Mongodb 在.NET中使用
使用bootstrapTable时获取数据
{ field: 'uut_result.start_time', title: 'TESTTIME', sortable: true }, { field: 'uut_result.test_result', title: 'RESULT', sortable: false }, { field: 'OS', title: 'OS', formatter: function (value, row, index) { return row.test_item_list[1].test_value; } }, { field: 'COND', title: 'COND', formatter: function (value, row, index) { return row.test_item_list[2].test_result; } },
后台获取数据:
<connectionStrings>
<add name="MongoHQ" connectionString="mongodb://******:27017" />
</connectionStrings>
//连接Mongodb数据库 MongoClient client = new MongoClient(new MongoUrl(ConfigurationManager.ConnectionStrings["MongoHQ"].ConnectionString)); //const string connectionString = "mongodb://*****:27017"; //var client = new MongoClient(connectionString); var database = client.GetDatabase("TestData"); var collection = database.GetCollection<BsonDocument>("GDTest"); string DataJson=""; // for (int i = 0; i < str.Length; i++) //插入多条时 // { BsonDocument document = BsonDocument.Parse(DataJson); collection.InsertOne(document); // }
public static void MongoSeltest() { string CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); Console.WriteLine(CreateTime); //List<string> list = new List<string>(); const string connectionString = "mongodb://****:27017"; var client = new MongoClient(connectionString); var database = client.GetDatabase("AOC"); var collection = database.GetCollection<BsonDocument>("Test"); //显示数据 var projection = Builders<BsonDocument>.Projection.Include("test_item_list.sub_test_item_list.test_value").Include("test_item_list.sub_test_item_list.id").Exclude("_id"); var builder = Builders<BsonDocument>.Filter; //查询条件 var filter = builder.And(builder.Eq("uut_info.work_order", "SPZS06311C1"), builder.Eq("uut_result.test_result", "passed"), builder.Eq("test_item_list.sub_test_item_list.test_result", "passed"), builder.Eq("test_item_list.sub_test_item_list.id", "1")); using ( var doc = collection.Aggregate() //.Match(filter) //.Lookup("Firware", "ppid", "ppid", "Firware") //.Unwind("Firware") //.Lookup("TRX", "ppid", "ppid", "TRX") //.Unwind("TRX") //.Limit(1) //.Project(projection) //.ToCursor(); .Unwind("test_item_list") .Unwind("test_item_list.sub_test_item_list") .Match(filter) .Project(projection) //.Limit(10) .ToCursor() ) { // int a = 0; // while (doc.MoveNext()) // { // foreach (var s in doc.Current) // { // a++; // JObject js = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(s.ToString()); // string value = js["test_item_list"]["sub_test_item_list"]["test_value"].ToString(); // //json(value); // //list.Add(value); // Console.Write(a); // } // } //} foreach (var s in doc.ToEnumerable()) { //json(s.ToString()); JObject js = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(s.ToString()); string value = js["test_item_list"]["sub_test_item_list"]["test_value"].ToString(); Console.Write(value); } string CreateTime1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); File.AppendAllText(@"D:\a_文档\b.txt", CreateTime1 + "\n", Encoding.Default); Console.WriteLine(CreateTime1); } }