Existe-t-il un opérateur que je pourrais utiliser dans la fonction agrégat pour obtenir une chaîne au lieu d'ObjectId en réponse?
db.something.aggregate([ {$match: {'property': {$exists:true}} }, {$project: {stringId: '$_id.???'}}])
Mongodb 4.0 a introduit $toString
opérateur d'agrégation. Donc, maintenant, vous pouvez facilement convertir ObjectId en chaîne
db.collection.aggregate([
{
$project: {
_id: {
$toString: "$_id"
}
}
}
])
OU vice versa en utilisant $toObjectId
agrégation
db.collection.aggregate([
{
$project: {
_id: {
$toObjectId: "$_id"
}
}
}
])
Il n'y a pas d'opérateur direct dans la fonction d'agrégation pour obtenir la chaîne de ObjectId.
Après la version 2.6 Vous pouvez utiliser la méthode ObjectId.toString()
pour convertir votre ObjectId en chaîne. Vous devez d'abord faire correspondre et projeter votre ObjectID. Ensuite, vous pouvez convertir cet ID d'objet en chaîne à l'aide de ObjectID.toString()
.
db.something.aggregate([{"$match":{'property': {$exists:true}}},{"$project":{"_id":1}}])
Et puis utilisez l'objet résultant et obtenez la chaîne comme réponse en utilisant ObjectID.tostring()
Modifier: vous pouvez accéder à l'attribut str de l'ID d'objet à l'aide de
ObjectId("507f191e810c19729de860ea").str
source: documents mongodb