Operatore Mod (resto) in MongoDB

Qual'è in MongoDB la sintassi corretta per una query che soddisfi il seguente criterio o condizione se preferisci:

a % 4 >= 2

Ossia, come usare l'operatore (indicato con %) mod (modulo, resto di una divisione tra interi) in MongoDB? Ho provato con il comando illustrato di seguito, ma esso ritorna sempre vuoto (empty):

db.data.find( { a : { $mod : [ 4, { $gte : 2 } ] } } );

Ho provato anche usando la seguente espressione Javascript:

db.data.find( "this.a % 4 >= 2" ); 

Javascript funziona e ritorna i documenti attesi, ma non va bene per lavorare con PyMongo. Sto utilizzando:

  • MongoDB version 2.0.4
  • PyMongo version 2.1.1
In Corso 2
MongoDB 20-09-2019 2 Risposte 985 Visite +1
Alessandro Ingiglio

Alessandro Ingiglio

Autore di questa domanda

Risposte ( 2 approvate )

  1. Bruno Verzinesi
    0
    20-09-2019 12:30:22
    Rispondi

    Non puoi usare l'operatore mod in una espressione come quella da te indicata, o utilizzi una condizione where o prima ti memorizzi il resto e poi lo confronti, quindi queste due strade:

    1. Usa una espressione where: { $where: "this.a % 4 >= 2" }
    2. Memorizza il risultato dell'espressione a % 4 in un campo, e poi utilizzi il valore (ovvero il resto) per i tuoi confronti con gli operatori matematici maggiore, minore o quello che ti serve.
  2. Guido Sperciani
    0
    20-09-2019 12:25:05
    Rispondi

    Io non penso tu stia utilizzando una query mongodb con l'operatore mod in modo corretto, prova questa:

    cursor = collection.find().where( "this.a % 4 >= 2" );

     

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

 Domanda Precedente

 Elenco Domande 

Domanda Successiva