کار با اسناد در RavenDb 4، بازیابی اسناد
نویسنده: عبدالصالح
تاریخ: ۱۳۹۷/۰۳/۱۷ ۲:۱۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
var user = _documentSession
.Include<User>(x => x.Apps[59].AddressId)
.Load("Users/131-A");
var address = _documentSession.Load<Address>(user.Apps[59].AddressId) var user = _documentSession
.Include<User>(x => x.Apps.Values.Select(app => app.AddressId))
.Load("Users/131-A");
var addresses = List<Address>();
foreach(app in user.Apps)
{
addresses.Add(_documentSession.Load<Address>(app.AddressId)); //queryسمت کلاینت انجام اجرا میشود
} List<User> users = await _documentSession
.Query<Users>()
.Where(u => u.PhoneNumber.StartsWith("915"))
.ToListAsync(); var users = await _documentSession.Query<AppUser>()
.Where(u => u.Id.Equals("915"))
.Select(u => new
{
u.Apps[appCode].FirstName,
u.Apps [appCode].LastName,
})
.ToListAsync(); from Users as user
where startsWith(user.PhoneNumber, "915")
select {
FirstName : user.Apps ["59"].FirstName,
LastName : user.Apps ["59"].LastName
} from u in _documentSession.Query<User>()
where u.PhoneNumber.StartsWith("915")
let app = u.Apps["59"]
select new
{
app.FirstName,
app.LastName,
}; declare function output(u) {
var app = u.Apps["59"];
return { FirstName : app.FirstName, LastName : app.LastName};
}
from Users as user
where startsWith(user.PhoneNumber, "915")
select output(user) app.FirstName, app.LastName, *key = u.ActiveInApps.Select(a => a.Key)
query = query.Search(u => u.key, "59");
public class User_MyIndex : AbstractIndexCreationTask<User>
{
Map = users =>
from u in users
from app in u.Apps
select new
{
Id = u.Id,
PhoneNumber = u.PhoneNumber,
UserName = app.Value.UserName,
FirstName = app.Value.FirstName,
LastName = app.Value.LastName,
IsActive = app.Value.IsActive,
key = app.Key
};
} new User_MyIndex().Execute(store);
IndexCreation.CreateIndexes(typeof(User_MyIndex).Assembly, store);
from u in _documentSession.Query<User, User_MyIndex>() ...
select new
{
...
key = aia.Key,
Address = LoadDocument<Address>(aia.Value.AddressId),
// City = LoadDocument<Address>(aia.Value.AddressId).City,
}; Message = app.Messages.Select(m => LoadDocument<Message>(m).Content)
var users = _documentSession.Advanced.AsyncDocumentQuery<User, User_MyIndex>()
.WhereStartsWith(nameof(AppUser.PhoneNumber), "915")
.WhereEquals("key", appCode, exact: true)
.SelectFields<AppUserModel>(new[] { $"Apps[{appCode}].FirstName", $"Apps[{appCode}].LastName" })
.ToListAsync(); public class Post
{
public int Id { get; set; }
public string Content { get; set; }
public string Title { get; set; }
public List<string> Tags { get; set; }
public string WriterName { get; set; }
public string WriterId { get; set; }
} public class Post_ByContent : AbstractIndexCreationTask<Post>
{
public Post_ByContent()
{
Map = posts=> from post in posts
select new
{
post.Content
};
Analyzers.Add(p => p.Content, "StandardAnalyzer");
}
} List<Post> posts = _documentSession
.Query<Post, Post_ByContent>()
.MoreLikeThis(builder => builder
.UsingDocument(p => p.Id == "posts/59-A")
.WithOptions(new MoreLikeThisOptions
{
Fields = new[] { nameof(Post.Content) },
StopWordsDocumentId = "appConfig/StopWords"
}))
.ToList();