I Created user with custom fields and in User Manger am able to see user custom fields along with data. Are these fields stored in Mongo Db?
I want to retrieve all the custom user profile data into Json format, please suggest any approach.
Sitecore Stack Exchange is a question and answer site for developers and end users of the Sitecore CMS and multichannel marketing software. It only takes a minute to sign up.
Sign up to join this communityYou can use Sitecore PowerShell Extensions to extract the custom properties. The data is stored in the Core database.
$user = Get-User -Id "sitecore\michael"
$data = @{}
foreach($name in $user.Profile.GetCustomPropertyNames()) {
$data[$name] = $user.Profile.GetCustomProperty($name)
}
$data | ConvertTo-Json
I've not had to do this before but there are a few options available to you by the looks of things.
1) Use an query against the Mongo DB API similar to this:
//Connecting to the Analytics DB
var driver = Sitecore.Analytics.Data.DataAccess.MongoDb.MongoDbDriver.FromConnectionString("analytics");
//Building our query
var builder = new QueryBuilder();
var filter = builder.And(builder.GTE(_ => _.StartDateTime, DateTime.Now.AddDays(-30)), builder.EQ(_ => _.SiteName, siteName.ToLower()));
//Retrieving data from the "Interactions" collection
var interactions = driver.Interactions.FindAs(filter)
http://sitecorepro.blogspot.co.uk/2015/06/starting-with-sitecore-analytics.html or http://www.nttdatasitecore.com/Blog/2016/July/Retrieving-Interactions-Data-from-MongoDB-using-Sitecore-Analytics-API
2) Use Sitecore Experience Extractor :https://github.com/Sitecore/experience-extractor
3) It looks like you could also query contact info via Search like so:
using (var context = ContentSearchManager.GetIndex("sitecore_analytics_index").CreateSearchContext())
{
var query = context.GetQueryable<IndexedContact>().Where(c=> c.Firstname.Equals("John"));
}