2013-03-07 5 views
8

Ich möchte meinen Index auf eine bestimmte Weise (-1, 1) sortieren und sicherstellen, dass Nullwerte an der Spitze des Indexes sind. Wie kann ich das sicherstellen?Wie werden NULL-Werte in einem MongoDB-Index sortiert?

+1

Null-Werte werden an der Spitze sein, wenn Sie sortieren, wenn Sie möchten, dass sie zuletzt kommen, müssen Sie etwas anderes als Null in – Sammaye

+0

setzen Danke. Bedeutet das auch, dass sie oben stehen, wenn ich .findOne() benutze und sie indiziert sind? – user1680104

+0

findOne findet nur ein Dokument. Sie sollten oben auf find() obwohl – Sammaye

Antwort

4

Wenn Sie absteigend sortieren und am Ende null Werte sehen, wäre das das Standardverhalten der Sortierung.

Es gibt wirklich nicht viel, was getan werden kann, um dieses Verhalten zu ändern, aber eine Abhilfe, die Ihnen die Ergebnisse geben Sie suchen ist zwei Abfragen zu tun, anstatt ein:

db.Collection.find({ a: null }); 
db.Collection.find({ a: { $ne: null } }).sort({ a: -1, b: 1 }); 
+0

Kann ich irgendwie einen umgekehrt sortierten Index erstellen und diesen mit findOne verwenden? Also gibt es mir nur einen Nullwert, wenn es irgendwelche mit Nullwerten gibt? – user1680104

+0

@ user1680104 'findOne' unterstützt keine Sortierung. Wenn Sie jedoch 'findOne' verwenden möchten, um einen Null-Wert zu finden, können Sie etwas wie 'db.collection.findOne ({a: null})' tun. Ich weiß, –

+0

. Ich möchte nur ein "wenn eins mit null existiert, nimm es, sonst nimm eins ohne" durch eine Abfrage. – user1680104

0

Sie gesagt haben, "Ich möchte nur im Grunde ein" wenn eins mit Null existiert nehmen Sie es, sonst nehmen Sie eins ohne "durch eine Abfrage", wie wäre es mit db.collection.find(). Sort(). Limit (1) ?

Verwandte Themen