update two sort query many fields example mongodb mongodb-query aggregation-framework

two - sort mongodb find



¿Cómo $ Project ObjectId para encadenar valor en mongodb agregado? (4)

¿Hay un operador que pueda usar en la función agregada para obtener una cadena en lugar de ObjectId en respuesta?

db.something.aggregate([ {$match: {''property'': {$exists:true}} }, {$project: {stringId: ''$_id.???''}}])


En mongo db versión 3.4 puedes hacer esto:

db.collection.aggregate([ { $project:{ "_id": ObjectId("$_id".str).valueOf() } }])


Mongodb 4.0 ha introducido el operador de agregación $toString . Por lo tanto, ahora puede convertir ObjectId a cadena fácilmente

db.collection.aggregate([ { $project: { _id: { $toString: "$_id" } } } ])

O viceversa, usando la agregación $toObjectId

db.collection.aggregate([ { $project: { _id: { $toObjectId: "$_id" } } } ])


No hay un operador directo en función agregada para obtener String desde ObjectId.

Después de la versión 2.6, puede usar el método ObjectId.toString() para convertir su ObjectId en una cadena. Primero emparejas y proyectas tu ObjectID. Luego, puede convertir este ID de objeto en una cadena utilizando ObjectID.toString() .

db.something.aggregate([{"$match":{''property'': {$exists:true}}},{"$project":{"_id":1}}])

Y luego use el Objeto resultante y obtenga la cadena como respuesta usando ObjectID.tostring()

Editar: puede acceder al atributo str del id de objeto usando

ObjectId("507f191e810c19729de860ea").str

fuente: documentos mongodb


Puedes hacerlo en línea usando el operador $concat :

db.something.aggregate( [ { $match : { ''property'' : { $exists:true } } }, { $project: { stringId: { $concat: [ ObjectId().str ] } } } ] )