Sto cercando di ottenere un comportamento "getOrCreate" utilizzando "findAndModify". Sto lavorando in nodejs utilizzando il driver nativo.Impossibile dedurre i campi di query per impostare l'errore sull'inserimento
ho:
var matches = db.collection("matches");
matches.findAndModify({
//query
users: {
$all: [ userA_id, userB_id ]
},
lang: lang,
category_id: category_id
},
[[ "_id", "asc"]], //order
{
$setOnInsert: {
users: [userA_id, userB_id],
category_id: category_id,
lang: lang,
status: 0
}
},
{
new:true,
upsert:true
}, function(err, doc){
//Do something with doc
});
quello che stavo cercando di fare è: "Trova incontro specifico con gli utenti specificati, lingua e categoria ... se non trovato, inserire uno nuovo con i dati specificati"
Mongo sta gettando questo errore:
Error getting/creating match { [MongoError: exception: cannot infer query fields to set, path 'users' is matched twice]
name: 'MongoError',
message: 'exception: cannot infer query fields to set, path \'users\' is matched twice',
errmsg: 'exception: cannot infer query fields to set, path \'users\' is matched twice',
code: 54,
ok: 0 }
c'è un modo per farlo funzionare? È impossibile?
Grazie :)
Grazie per la risposta ... funziona come un fascino :) – Pipe
c'è un altro modo? Non riesco a fare riferimento ad altre var nella funzione $ where. ReferenceError viene generato quando utilizzo una var al di fuori della funzione. –
@SooChengKoh No, non c'è. Ma questa non è la tua domanda. Quindi se hai un'altra domanda, per favore [chiedi.] (Http: // StackOverflow.com/questions/ask) –