MongoDB comment vérifier l'existence
Je voudrais savoir comment puis-je vérifier l'existence d'un objet avec mongoDB et C#.
J'ai trouvé un moyen de le faire, mais j'ai dû utiliser Linq merci pour Tout() la méthode, mais je voudrais savoir si il est possible de le faire sans Linq ?
database.GetCollection<ApplicationViewModel>("Applications").Find(Query.EQ("Name", applicationName)).Any()
Merci les gars!
Pourquoi sans LINQ?
Sans Linq parce que je ne veux pas de traitement de ma liste d'éléments dans la mémoire.
Sans Linq parce que je ne veux pas de traitement de ma liste d'éléments dans la mémoire.
OriginalL'auteur John | 2011-06-20
Vous devez vous connecter pour publier un commentaire.
Utilisation $count de l'opérateur pour éviter les problèmes de mémoire, il n'chargement des documents à partir de la base de données en mémoire:
Opérateur $existe dans mongodb peut être utilisé pour identfy que certaines champ existe dans un document, mais vous ne pouvez pas passer requête:
Désolé c'était mon erreur, voir j'ai mis à jour ma réponse avec un code correct.
merci beaucoup pour vous répondre, vous avez fait ma journée. Votre code fonctionne très bien. Je vous donne 1 vote + Accepté de répondre.
vous êtes les bienvenus.
Quand ce sont les données réelles d'être récupérée à partir de la base de données? Est FindAs<> fetch?
OriginalL'auteur Andrew Orsich
Le plus simple, le type/refactor-safe option est d'utiliser
LINQ
* avecAsQueryable
:Cela permettra de créer un nombre de commande et vérifier qu'il est supérieur à zéro.
Dans certains cas (où la performance est un problème), au lieu de compter les tous les documents correspondants, vous pouvez simplement dire
MongoDB
pour obtenir le premier et vérifier si il y en a un:Comme Robert Stam pointu, à la fois
MongoCollection.Exists
etQuery.Exists
ne sont pas pertinents dans ce cas.*À partir de la version 1.4 (2012-03-27) le pilote prend en charge
LINQ
requêtes (traduit de mongo requêtes, donc pas de soucis de mémoire).Mongo pilote ne prend pas en charge toutes les requêtes linq. "Non pris en charge filtre: Tous({document}{abonnés}.Où(({document}{userId} != \"1234\"))).
OriginalL'auteur i3arnon
La façon de vérifier l'existence dans le 2.x version du pilote est:
Ou asynchrone:
OriginalL'auteur i3arnon
MongoCollection.Existe vérifie si la collection elle-même existe, pas de savoir si un document existe.
Requête.Existe (le générateur de Requête version de dollars en existe un) est utilisé pour interroger si un document contient un domaine particulier (par nom).
Il n'est pas "officiel" de façon à se demander si un document qui correspond à une requête existe ou pas, mais la suggestion par Andrew Orsich à utiliser comte est probablement la meilleure façon. Ils seul commentaire que je voudrais ajouter, c'est que si vous allez à traiter le document correspondant(s) de toute façon, alors vous pourriez aussi bien aller de l'avant et de requêtes à l'aide de la variation de Trouver.
OriginalL'auteur Robert Stam
Je vais vous suggérer les méthodes représenté dans le tutoriel officiel
http://www.mongodb.org/display/DOCS/CSharp+Chauffeur+Tutoriel#CSharpDriverTutorial-FindandFindAsmethods
Vous pouvez trouver puis à compter pour obtenir de l'existence.
EDIT:
Pour la fixation de problème de mémoire, il semble qu'il "existe" la méthode Exists dans MongoCollection objet 😉
Édité pour la mémoire
la mémoire n'est pas vraiment un problème dans mon cas. Je suis juste curieux de savoir si le C# pilote de 10gen offrir un "officiel" de façon à vérifier l'existence d'un document. Car j'ai vu qu'avec mongo de la syntaxe, il y a le "exister" mot-clé comme vous pouvez le voir ici mongodb.org/display/DOCS/... mais je ne sais pas si il y a quelque chose de similaire en C#...
ouais j'ai vu l'existence du mot-clé de MongoCollection, mais il ne prend aucun paramètre, alors comment puis-je filtrer ma liste d'applications par un nom particulier ?
OriginalL'auteur Mauro
De cette article, nous lisons:
Qui signifie que d'utiliser quelque chose comme:
sera probablement plus rapide.
OriginalL'auteur Haris Osmanagić