<div dir="ltr">Hi Luc,<div><br></div><div>Thanks for your link to the documentation; that was exactly what I saw on the data dump some time ago, didn't know it was published there :)</div><div><br></div><div>Just one question regarding your example in contrast with Sean's...</div>
<div><br></div><div><span style="font-family:arial,sans-serif;font-size:13px">x.registers['name'].assign('</span><span style="font-family:arial,sans-serif;font-size:13px">Messi')<br></span><div>x.registers['name_s'].assign('Messi')</div>
</div><div><br></div><div>You added "_s" to the field while Sean removed it and said it will be "name_register" automatically... in your case would turn into "name_s_register" I supposed, right?</div>
<div><br></div><div>Thanks!<br>Alex</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Aug 20, 2014 at 12:27 AM, Luc Perkins <span dir="ltr"><<a href="mailto:lperkins@basho.com" target="_blank">lperkins@basho.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Alex,<div><br></div><div>Do you mean a map as in a Python dict or as in a Riak map? If you want to create <b>footballers</b> as a Riak map, skip to the <b>Maps</b> section in <a href="http://docs.basho.com/riak/2.0.0/dev/using/data-types/#Maps" target="_blank">this doc</a>. That provides a full tutorial for dealing with other Data Types, such as counters, within maps, and has Python code samples.</div>

<div><br></div><div>If you're storing Python dicts as JSON in Riak, as in your example, you will have to GET the map from Riak and manipulate it client side. So if you wanted to add a <b>goals_i</b> counter that starts at 0, you'd have to do something like this:<br>

<br><b><font face="courier new, monospace">obj = bucket.get('lionelmessi')</font></b></div><div><b><font face="courier new, monospace">obj.data['goals_i'] = 0</font></b></div><div><b><font face="courier new, monospace">obj.store()</font></b></div>

<div><b><br></b></div><div>To increment the counter, you could do so in a function like this:<br><br><font face="courier new, monospace"><b>def increment(bucket, key, n):</b></font></div><div><font face="courier new, monospace"><b>    obj = bucket.get(key)</b></font></div>

<div><font face="courier new, monospace"><b>    obj['goals_i'] = obj['goals_i'] + n</b></font></div><div><font face="courier new, monospace"><b>    obj.store()</b></font></div><div><font face="courier new, monospace"><b><br>

</b></font></div><div>That's of course a very rough example. But you can probably see from this example that using Riak maps can be a very nice option if you're using a data model that fits. Here's an example of storing your <b>lionelmessi</b> object as a Riak map:</div>

<div><br></div><div><b><font face="courier new, monospace">riak-admin bucket-type create maps '{"props":{"datatype":"map"}}'</font></b></div><div><b><font face="courier new, monospace">riak-admin bucket-type activate maps</font></b></div>

<div><font face="courier new, monospace"><br></font></div><div><b><font face="courier new, monospace">from riak.datatypes import Map</font></b></div><div><b><font face="courier new, monospace"><br></font></b></div><div><b><font face="courier new, monospace">bucket = client.bucket_type('maps').bucket('footballers')</font></b></div>

<div><font face="courier new, monospace"><b>messi_map = Map(bucket, 'lionelmessi')</b></font></div><div><font face="courier new, monospace"><b>messi_map.registers['name_s'].assign('Messi')</b></font></div>

<div><font face="courier new, monospace"><b>messi_map.registers['team_s'].assign('Barcelona')</b></font></div><div><font face="courier new, monospace"><b>messi_map.registers['number_i'].assign(str(10))</b></font></div>

<div><font face="courier new, monospace"><b>messi_map.counters['goals_i'].increment()</b></font></div><div><font face="courier new, monospace"><b>messi_map.store()</b></font></div><span class="HOEnZb"><font color="#888888"><div>
<br></div><div>Luc</div></font></span></div>
<div class="gmail_extra"><br><br><div class="gmail_quote"><div class="">On Tue, Aug 19, 2014 at 2:59 PM, Alex De la rosa <span dir="ltr"><<a href="mailto:alex.rosa.box@gmail.com" target="_blank">alex.rosa.box@gmail.com</a>></span> wrote:<br>

</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr">Imagine I have a Riak object "footballer" with some static fields: name, team, number. I store them like this now:<div>

<br></div><div>1: CREATE INDEX FOR RIAK SEARCH</div><div>curl -XPUT "<a href="http://148.251.140.229:8098/search/index/ix_footballers" target="_blank">http://148.251.140.229:8098/search/index/ix_footballers</a>"<br>


</div><div><br></div><div>2: CREATE BUCKET TYPE</div><div>riak-admin bucket-type create tp_footballers '{"props":{"allow_mult":false,"search_index":"ix_footballers"}}'<br></div>


<div>riak-admin bucket-type activate tp_footballers<br></div><div><br></div><div>3: INSERT A PLAYER</div><div><div>bucket = client.bucket_type('tp_footballers').bucket('footballers')</div><div>key = bucket.new('lionelmessi', data={'name_s':'Messi', 'team_s':'Barcelona', 'number_i':10}, content_type='application/json')</div>


<div>key.store()</div></div><div><br></div><div>4: SEARCH FOR BARCELONA PLAYERS</div><div>r = client.fulltext_search('ix_footballers', 'team_s:Barcelona')<br></div><div><br></div><div>So far so good :) BUT... what if I want to have a field "goals_i" that is a counter that will be incremented each match day with the number of goals he scored? What is the syntax/steps to do to set up "footballers" as a MAP and then put a COUNTER inside? I know is possible as I read it in some data dump some Basho employee passed me some time ago, but I can't manage to see how to do it now.</div>


<div><br></div><div>Thanks!<span><font color="#888888"><br>Alex</font></span></div></div>
<br></div></div><div class="">_______________________________________________<br>
riak-users mailing list<br>
<a href="mailto:riak-users@lists.basho.com" target="_blank">riak-users@lists.basho.com</a><br>
<a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><br>
<br></div></blockquote></div><br></div>
</blockquote></div><br></div>