Vous devez comparer la valeur _id à une instance de BinData (pas à une chaîne). Malheureusement, le constructeur BinData prend une chaîne Base64 au lieu d'une chaîne hexadécimale.
Votre valeur GUID manque deux chiffres hexadécimaux à la fin, donc pour les besoins de cet exemple, je suppose qu'ils sont "00". Les valeurs suivantes sont équivalentes:
hex: "E3E45566-AFE4-A564-7876-AEFF6745FF00" (ignoring dashes)
base64: "ZlXk4+SvZKV4dq7/Z0X/AA=="
Ainsi, votre requête devrait être:
>db.person.find({_id : new BinData(3, "ZlXk4+SvZKV4dq7/Z0X/AA==")})
Je suppose que le sous-type binaire a été correctement réglé sur 3. Dans le cas contraire, ce pilote a été utilisé pour créer les données ?
oh cher, ce n'est pas très convivial est-il! Je vais hydrater un MongoDB à partir de MSSQL, en utilisant des guids existants comme des clés, et exécuter des requêtes spot de temps en temps. Je suppose que je vais devoir trouver un moyen facile de convertir manuellement les guids hex en base64. Merci de votre aide! – Journeyman
Je sais ... J'ai essayé de trouver une fonction Javascript qui convertirait une chaîne hexadécimale en une chaîne Base64 mais il ne semble pas y en avoir une intégrée dans la langue. Vous pouvez rechercher les fonctions que les gens ont écrites pour le faire. Ou vous pourriez écrire votre programme d'importation en C# au lieu de Javascript? –
Pour convertir le GUID en base64: 'Convert.ToBase64String (Guid.NewGuid(). ToByteArray())' –