1. 建立十萬筆資料,這邊附上我的測試 CLASS 還有新增詞十萬筆的 code ,這樣才會知道,我之後測試的搜尋到底在搜尋什麼
//Friend Model
public class Friend
{
public string Name { get; set; }
public string _id { get; set; }
public DateTime CreateDate { get; set; }
public List Phones { get; set; }
public bool IsActive { get; set; }
public decimal Salary { get; set; }
public Friend()
{
Phones = new List();
}
public class Phone
{
public string Num { get; set; }
public string Type { get; set; }
}
}
//Create 10w Data
using (var db = new LiteDatabase(AppDomain.CurrentDomain.BaseDirectory + "sample.db"))
{
var userColleciton = db.GetCollection("FRIENDS");
for (var i = 1; i <= 100_000; i++)
{
var u = new Friend { _id = "friend" + i, CreateDate = DateTime.Now, IsActive = true, Name = "FRIEND" + i, Salary = 10 * i };
u.Phones.Add(new Friend.Phone { Num = "09" + i, Type = "HOME" });
userColleciton.Upsert(u);
}
}
using (var db = new LiteDatabase(AppDomain.CurrentDomain.BaseDirectory + "sample.db"))
{
sw.Start();
var userColleciton = db.GetCollection("FRIENDS");
var data1 = userColleciton.FindAll().Where(x => x.Phones.Any(y => y.Num.Contains("099999")));
if (data1 != null)
{
foreach (var d in data1)
{
Console.WriteLine(JsonConvert.SerializeObject(d));
}
sw.Stop();
Console.WriteLine("Cost time:" + sw.Elapsed);
Console.WriteLine("Count:" + data1.Count());
}
}
//Result
/*
{"Name":"FRIEND9999","_id":"friend9999","CreateDate":"2024-01-26T17:10:44.664+08:00","Phones":[{"Num":"099999","Type":"HOME"}],"IsActive":true,"Salary":99990.0}
{"Name":"FRIEND99990","_id":"friend99990","CreateDate":"2024-01-26T17:10:59.594+08:00","Phones":[{"Num":"0999990","Type":"HOME"}],"IsActive":true,"Salary":999900.0}
{"Name":"FRIEND99991","_id":"friend99991","CreateDate":"2024-01-26T17:10:59.594+08:00","Phones":[{"Num":"0999991","Type":"HOME"}],"IsActive":true,"Salary":999910.0}
{"Name":"FRIEND99992","_id":"friend99992","CreateDate":"2024-01-26T17:10:59.594+08:00","Phones":[{"Num":"0999992","Type":"HOME"}],"IsActive":true,"Salary":999920.0}
{"Name":"FRIEND99993","_id":"friend99993","CreateDate":"2024-01-26T17:10:59.594+08:00","Phones":[{"Num":"0999993","Type":"HOME"}],"IsActive":true,"Salary":999930.0}
{"Name":"FRIEND99994","_id":"friend99994","CreateDate":"2024-01-26T17:10:59.595+08:00","Phones":[{"Num":"0999994","Type":"HOME"}],"IsActive":true,"Salary":999940.0}
{"Name":"FRIEND99995","_id":"friend99995","CreateDate":"2024-01-26T17:10:59.595+08:00","Phones":[{"Num":"0999995","Type":"HOME"}],"IsActive":true,"Salary":999950.0}
{"Name":"FRIEND99996","_id":"friend99996","CreateDate":"2024-01-26T17:10:59.595+08:00","Phones":[{"Num":"0999996","Type":"HOME"}],"IsActive":true,"Salary":999960.0}
{"Name":"FRIEND99997","_id":"friend99997","CreateDate":"2024-01-26T17:10:59.595+08:00","Phones":[{"Num":"0999997","Type":"HOME"}],"IsActive":true,"Salary":999970.0}
{"Name":"FRIEND99998","_id":"friend99998","CreateDate":"2024-01-26T17:10:59.595+08:00","Phones":[{"Num":"0999998","Type":"HOME"}],"IsActive":true,"Salary":999980.0}
{"Name":"FRIEND99999","_id":"friend99999","CreateDate":"2024-01-26T17:10:59.595+08:00","Phones":[{"Num":"0999999","Type":"HOME"}],"IsActive":true,"Salary":999990.0}
Cost time:00:00:02.0914854
Count:11
*/
大概先寫到這邊,主要是第四個花了我一點時間測試
--
Before you read this, the article was in a superposition of human and AI. Upon observation, the wave function collapsed into a sleep-deprived developer.