Note that there are some explanatory texts on larger screens.

plurals
  1. POMongoengine list filtering
    primarykey
    data
    text
    <p>I have a list of required perms in some mongoengine's documents and I would like filtering on it.</p> <p>Consider this Document:</p> <pre class="lang-python prettyprint-override"><code>class Entry(Document): required_perms = ListField(StringField()) e = Entry(required_perms=['create', 'update']) e.save() </code></pre> <p>Here are some usecases:</p> <pre class="lang-python prettyprint-override"><code>all_perms = ['create', 'update', 'delete'] Entry.objects.filter(required_perms__in=all_perms) [&lt;Entry: Entry object&gt;] # Returned because 'create' OR 'update' are in required_perms Entry.objects.filter(required_perms__in=['create', 'delete']) [&lt;Entry: Entry object&gt;] # Returned because 'create' is in required_perms Entry.objects.filter(required_perms__all=all_perms) [] # Not returned because 'delete' is not in required_perms </code></pre> <p>When querying with <code>$in</code>, I get the <code>Entry</code>, because at least one of the string is in the list. <code>$all</code> does not cover my needs because according to the doc it is the reverse of what I'm intending to do: <em>"every item in list of values provided is in array"</em> ; and I would like: <em>"every item in array is in list of provided values"</em>.</p> <p>So, I would like to request something <em>like</em> this:</p> <pre class="lang-python prettyprint-override"><code>Entry.objects.filter(everyoneof__required_perms__in=['create', 'delete']) </code></pre> <p>I tricked this to clearly explain it but this is ugly, not dynamic and <em>should</em> not be used:</p> <pre class="lang-python prettyprint-override"><code>Entry.objects(Q(required_perms__0__in=all_perms) &amp; Q(required_perms__1__in=all_perms)) """ Can be tested with: all_perms = ['create', 'delete'] -&gt; No results and: all_perms = ['create', 'update', 'delete'] -&gt; 1 result """ </code></pre> <p>Is there a way to do something like that ? Maybe with a raw query ?</p> <p>Thanks.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload