Próbuję uzyskać zachowanie "getOrCreate" przy użyciu "findAndModify". Pracuję w nodejs przy użyciu natywnego sterownika.Nie można określić pól zapytania, aby ustawić błąd wstawiania
mam:
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
});
Co starałem się zrobić to: „Znajdź konkretny mecz z określonych użytkowników, lang i kategorię ... jeśli nie znaleziono, włóż nową kartę z określonymi danymi”
Mongo rzuca ten błąd:
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 }
Czy istnieje sposób, aby to działało? To niemożliwe?
Dziękuję :)
Dziękuję za odpowiedź ... działa jak urok :) – Pipe
czy jest inny sposób? Nie mogę odwoływać się do innych var w funkcji $ where. ReferenceError jest generowany, gdy używam dowolnego var poza funkcją. –
@SooChengKoh Nie, nie ma. Ale to nie jest twoje pytanie. Więc jeśli masz inne pytanie, proszę [zapytaj.] (Http: // stackoverflow.com/questions/ask) –