2011-03-07 5 views
0

J'écris l'application PHP avec Mongodb. Je recherche commeTrier la valeur dans Mongodb

$regex='/.*sim.*/i'; 
$find['Word']=new mongoRegex($regex); 
$cursor = $collection->find($find); 

et a obtenu le résultat comme celui-ci

assimilent

fac-similé

fortissimo

généralissime

passim

kakis

kakis

similaire

De même

simples

mal simples

plus simple

simple

simplement

Mais je veux trier comme

1. sim 
2. sim* 
3. *sim* 
4. sim* 

Comment écrit l'expression régulière ou comment trier comme ça? En MySQL, j'ai écrit

SELECT * , IF(`Word` = 'sim', 1, IF(`Word` LIKE 'sim%', 2, IF(`Word` LIKE '%sim', 4, 3))) AS `sort` FROM `dblist` WHERE `Word` LIKE '%sim%' ORDER BY `sort` , `Word` 

Maintenant, je prévois de changer MySQL en Mongodb mais le problème est la recherche du résultat. Je ne peux pas trier les résultats comme MySQL dans mongodb.

Mise à jour:

Je sort récupérer les données, mais le problème est la pagination. Le résultat viendra plus de 1000 par fois. Je ne veux pas récupérer tous les résultats de la base de données. Donc, triez dans la base de données et récupérez le résultat avec pagination.

Répondre

1

Je suis sûr que vous devrez faire ce genre de tri dans votre propre code après avoir récupéré le résultat. Je ne connais aucun équivalent à AS de SQL.

+0

Oui, pour effectuer un tri personnalisé (basé sur une fonction), vous devez le faire dans le client. –

0

La collection Mongodb a l'opération sort, si vous voulez des opérations plus complexes, faites-le du côté client.

Questions connexes