Mongodb: hoe u kunt controleren of een veld bestaat
U kunt de volgende methoden gebruiken om te controleren of een veld bestaat in een verzameling in MongoDB:
Methode 1: Controleer of het veld bestaat
db.myCollection.find({ " myField ": { $exists : true } })
Deze methode controleert of „myField“ bestaat in de verzameling met de naam myCollection . Als dit het geval is, worden alle documenten geretourneerd die de veldnaam bevatten. Als dit niet het geval is, retourneert het niets.
Methode 2: Controleer of het ingesloten veld bestaat
db.myCollection.find({ " myField.embeddedField ": { $exists : true } })
Deze methode controleert of de veldnaam „embeddedField“ in het veld „myField“ bestaat in de verzameling met de naam myCollection . Als dit het geval is, worden alle documenten geretourneerd die de veldnaam bevatten. Als dit niet het geval is, retourneert het niets.
De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken met een incassoteam met de volgende documenten:
db.teams.insertOne({team: "Mavs", class: {conf: "Western", div: "A"}, points: 31 }) db.teams.insertOne({team: "Spurs", class: {conf: "Western", div: "A"}, points: 22 }) db.teams.insertOne({team: "Jazz", class: {conf: "Western", div: "B"}, points: 19 }) db.teams.insertOne({team: "Celtics", class: {conf: "Eastern", div: "C"}, points: 26 })
Voorbeeld 1: Controleer of het veld bestaat
De volgende code laat zien hoe u kunt controleren of de veldnaam „points“ bestaat in de teamscollectie :
db.teams.find({ " points ": { $exists : true } })
Deze query retourneert de volgende documenten:
{ _id: ObjectId("6203d10c1e95a9885e1e7637"), team: 'Mavs', class: { conf: 'Western', div: 'A' }, points: 31 } { _id: ObjectId("6203d10c1e95a9885e1e7638"), team: 'Spurs', class: { conf: 'Western', div: 'A' }, points: 22 } { _id: ObjectId("6203d10c1e95a9885e1e7639"), team: 'Jazz', class: { conf: 'Western', div: 'B' }, points: 19 } { _id: ObjectId("6203d10c1e95a9885e1e763a"), team: 'Celtics', class: { conf: 'Eastern', div: 'C' }, points: 26 }
Omdat de veldnaam „punten“ bestaat, wordt elk document dat het veld „punten“ bevat geretourneerd.
Stel dat we in plaats daarvan controleren of de veldnaam “steals” voorkomt in de teamcollectie :
db.teams.find({ " steals ": { $exists : true } })
Omdat dit veld niet bestaat, wordt er geen uitvoer geretourneerd.
Voorbeeld 2: Controleer of een ingesloten veld bestaat
De volgende code laat zien hoe u kunt controleren of de ingebouwde veldnaam „div“ bestaat in het veld „class“ van de teamscollectie :
db.teams.find({ " class.div ": { $exists : true } })
Deze query retourneert de volgende documenten:
{ _id: ObjectId("6203d10c1e95a9885e1e7637"), team: 'Mavs', class: { conf: 'Western', div: 'A' }, points: 31 } { _id: ObjectId("6203d10c1e95a9885e1e7638"), team: 'Spurs', class: { conf: 'Western', div: 'A' }, points: 22 } { _id: ObjectId("6203d10c1e95a9885e1e7639"), team: 'Jazz', class: { conf: 'Western', div: 'B' }, points: 19 } { _id: ObjectId("6203d10c1e95a9885e1e763a"), team: 'Celtics', class: { conf: 'Eastern', div: 'C' }, points: 26 }
Omdat de naam van het ingesloten veld „div“ bestaat in het veld „class“, wordt elk document dat het ingesloten veld „div“ bevat, geretourneerd.
Stel dat we in plaats daarvan controleren of de ingebouwde veldnaam „divisie“ bestaat in het veld „klasse“ in de teamsverzameling :
db.teams.find({ " class.division ": { $exists : true } })
Omdat dit ingebouwde veld niet bestaat, wordt er geen uitvoer geretourneerd.
Opmerking : u kunt hier de volledige documentatie voor de functie $exists vinden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in MongoDB kunt uitvoeren:
MongoDB: Hoe u alle veldnamen kunt weergeven
MongoDB: velden hernoemen
MongoDB: Hoe nieuwe velden toe te voegen
MongoDB: velden verwijderen