2017-10-16 8 views
0

Je suis en train de coder en d-langue et essayons d'extraire le dernier modifié le document à partir d'un tableau de documents, avec le langage D (pas dans la console !!!!) la requête est comme ceci:Comment puis-je dans d-languge trouver les dernières données modifiées dans la collection mongodb, filtré avec find ({"...": ".."})

Collection ct = mongo.web.cell; 
auto cell = ct.find({"room": 4 }).sort({'_id': -1 }).limit(1); 

et les erreurs données par dub est

source/app.d(166,58): Error: found : when expecting ; following statement 
source/app.d(166,61): Error: found } when expecting ; following statement 
source/app.d(166,62): Error: found) instead of statement 

Lorsque les modifications arrivent dans une pièce les données de la cellule sont insérées, pas mises à jour J'utilise Visual Studio Code, dernière version

Des idées?

+0

'{ « chambre »: 4}' est pas de syntaxe valide, si vous voulez passer un tableau, vous devez utiliser '[ « chambre »: 4]' – weltensturm

+0

Thks mais didn ne fonctionne pas non plus, a ces erreurs à la place: source/app.d (170,54): Erreur: constante de caractère non terminée source/app.d (170,56): Erreur: identifiant trouvé lors de l'attente; instruction suivante source/app.d (170,58): Erreur: constante de caractère non terminée source/app.d (170,60): Erreur: trouvée: lors de l'attente; instruction suivante source/app.d (170,63): Erreur: trouvée} lors de l'attente; instruction suivante source/app.d (170,64): Erreur: trouvé) au lieu de l'instruction –

+0

Et si je réduis la ligne à simplement trouver (["room": 4]); Je reçois cette erreur mondo.Collection.find (T = BsonObject) (dans Query query = Query.init, dans QueryFlags flags = QueryFlags.NONE, dans ReadPrefs readPrefs = null) –

Répondre

2

Je déduis que vous utilisez mondo, si vous lisez la documentation de la bibliothèque et une partie du code de here et here, voici ce que vous devez faire:

Mongo mongo = new Mongo("mongodb://yourhost"); 
Collection ct = mongo.web.cell; 

auto q = new Query(); // create a new query object 
q.conditions["room"] = 4; // specify the query condition 

auto s = new BsonObject("_id", "-1"); // creat a new bson object 
q.sorts(s.dup); // use sorts not sort 

ct.find(q).each!writeln; // find the results 

Lorsque vous utilisez tri , vous utiliserez le std.algorithm.sorting et non la fonction de tri de mondo.

espérons que cela fonctionne

+0

Salut Quarashi il semble fonctionner jusqu'à l'impression, là il commence à se plaindre (en cours d'exécution 3.0.6 mongodb): Erreur: aucune propriété 'chaque' pour le type 'Curseur! (BsonObject)' –

+0

du manuel pour 3.0: db .users.find(). forEach (fonction (myDoc) {print ("utilisateur:" + monDoc.nom);}); ne fonctionne pas non plus Je sais que je reçois le mondo.Collection –

+0

@AndersS, 'each' est une fonction d'itération de bibliothèque standard, il suffit d'importer' std.algorithm' et vous pouvez l'utiliser, ou vous pouvez retourner le résultat utilisez foreach. – Qurashi