sql >> Database >  >> NoSQL >> MongoDB

Kan ik bepalen of een string een MongoDB ObjectID is?

Ik ontdekte dat de mongoose ObjectId-validator werkt om geldige objectIds te valideren, maar ik vond een paar gevallen waarin ongeldige ID's als geldig werden beschouwd. (bijv. een willekeurige tekenreeks van 12 tekens)

var ObjectId = require('mongoose').Types.ObjectId;
ObjectId.isValid('microsoft123'); //true
ObjectId.isValid('timtomtamted'); //true
ObjectId.isValid('551137c2f9e1fac808a5f572'); //true

Wat voor mij heeft gewerkt, is het casten van een string naar een objectId en vervolgens controleren of de originele string overeenkomt met de stringwaarde van de objectId.

new ObjectId('timtamtomted'); //616273656e6365576f726b73
new ObjectId('537eed02ed345b2e039652d2') //537eed02ed345b2e039652d2

Dit werkt omdat geldige id's niet veranderen wanneer ze naar een ObjectId worden gecast, maar een tekenreeks die een false valid krijgt, verandert wanneer ze naar een objectId worden gecast.



  1. MongoDB:unieke index op de eigenschap van het array-element

  2. Berichten verzenden naar groepen in Django Channels 2

  3. NoSQL-gegevensstreaming met MongoDB en Kafka

  4. maak en update meerdere MongoDB-documenten in één gesprek