➤ Use el menú desplegable Seleccione su lenguaje en la parte superior derecha para establecer el lenguaje de los siguientes ejemplos.
➤ Use el menú desplegable Seleccionar su lenguaje en la parte superior derecha para establecer el lenguaje de los siguientes ejemplos o seleccione MongoDB Compass.
De forma predeterminada, las consultas en MongoDB devuelven todos los campos de los documentos coincidentes. Para limitar la cantidad de datos que MongoDB envía a las aplicaciones, puede incluir un Documento de proyección para especificar o restringir los campos a devolver.
Esta página proporciona ejemplos de operaciones de consulta con proyección utilizando el
db.collection.find()Método mongosh en.
Los ejemplos en esta página usan la colección inventory. Se debe realizar la conexión a una base de datos de prueba en la instancia de MongoDB y luego crear la colección inventory:
Esta página proporciona ejemplos de operaciones de query con proyección utilizando MongoDB Compass.
Los ejemplos en esta página usan la colección inventory. Se debe realizar la conexión a una base de datos de prueba en la instancia de MongoDB y luego crear la colección inventory:
Esta página proporciona ejemplos de operaciones de consulta con proyección utilizando MongoCollection.Find()método en el controlador C# de MongoDB.
Los ejemplos en esta página usan la colección inventory. Se debe realizar la conexión a una base de datos de prueba en la instancia de MongoDB y luego crear la colección inventory:
Esta página proporciona ejemplos de operaciones de query con proyección utilizando la función Collection.Find en el MongoDB Go Driver.
Los ejemplos en esta página usan la colección inventory. Se debe realizar la conexión a una base de datos de prueba en la instancia de MongoDB y luego crear la colección inventory:
Esta página proporciona ejemplos de operaciones de query con proyección utilizando el método com.mongodb.reactivestreams.client.MongoCollection.find en el controlador Java Reactive Streams de MongoDB.
Los ejemplos en esta página usan la colección inventory. Se debe realizar la conexión a una base de datos de prueba en la instancia de MongoDB y luego crear la colección inventory:
Esta página proporciona ejemplos de operaciones de query con proyección utilizando el método com.mongodb.client.MongoCollection.find en el controlador síncrono de Java de MongoDB.
Tip
El driver ofrece métodos asistentes com.mongodb.client.model.Filters para facilitar la creación de documentos de filtro. Los ejemplos en esta página utilizan estos métodos para crear los documentos de filtro.
Los ejemplos en esta página usan la colección inventory. Se debe realizar la conexión a una base de datos de prueba en la instancia de MongoDB y luego crear la colección inventory:
Esta página proporciona ejemplos de operaciones de query con proyección utilizando el método motor.motor_asyncio.AsyncIOMotorCollection.find en el controlador Motor.
Los ejemplos en esta página usan la colección inventory. Se debe realizar la conexión a una base de datos de prueba en la instancia de MongoDB y luego crear la colección inventory:
Esta página proporciona ejemplos de operaciones de query con proyección usando el método Collection.find() en el controlador Node.js de MongoDB.
Los ejemplos en esta página usan la colección inventory. Se debe realizar la conexión a una base de datos de prueba en la instancia de MongoDB y luego crear la colección inventory:
En esta página, se proporcionan ejemplos de operaciones de query con proyección mediante el método MongoDB\\Collection::find() en la Librería PHP de MongoDB.
Los ejemplos en esta página usan la colección inventory. Se debe realizar la conexión a una base de datos de prueba en la instancia de MongoDB y luego crear la colección inventory:
Esta página proporciona ejemplos de operaciones de query con proyección utilizando el método pymongo.collection.Collection.find en el controlador de Python PyMongo.
Los ejemplos en esta página usan la colección inventory. Se debe realizar la conexión a una base de datos de prueba en la instancia de MongoDB y luego crear la colección inventory:
Esta página proporciona ejemplos de operaciones de query con proyección utilizando el método Mongo::Collection#find() en el MongoDB Ruby Driver.
Los ejemplos en esta página usan la colección inventory. Se debe realizar la conexión a una base de datos de prueba en la instancia de MongoDB y luego crear la colección inventory:
Esta página proporciona ejemplos de operaciones de las query con proyección utilizando colección.find() método en el MongoDB Scala Driver.
Los ejemplos en esta página usan la colección inventory. Se debe realizar la conexión a una base de datos de prueba en la instancia de MongoDB y luego crear la colección inventory:
db.inventory.insertMany( [ { item: "journal", status: "A", size: { h: 14, w: 21, uom: "cm" }, instock: [ { warehouse: "A", qty: 5 } ] }, { item: "notebook", status: "A", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "C", qty: 5 } ] }, { item: "paper", status: "D", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "A", qty: 60 } ] }, { item: "planner", status: "D", size: { h: 22.85, w: 30, uom: "cm" }, instock: [ { warehouse: "A", qty: 40 } ] }, { item: "postcard", status: "A", size: { h: 10, w: 15.25, uom: "cm" }, instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] } ]);
[ { "item": "journal", "status": "A", "size": { "h": 14, "w": 21, "uom": "cm" }, "instock": [ { "warehouse": "A", "qty": 5 } ] }, { "item": "notebook", "status": "A", "size": { "h": 8.5, "w": 11, "uom": "in" }, "instock": [ { "warehouse": "C", "qty": 5 } ] }, { "item": "paper", "status": "D", "size": { "h": 8.5, "w": 11, "uom": "in" }, "instock": [ { "warehouse": "A", "qty": 60 } ] }, { "item": "planner", "status": "D", "size": { "h": 22.85, "w": 30, "uom": "cm" }, "instock": [ { "warehouse": "A", "qty": 40 } ] }, { "item": "postcard", "status": "A", "size": { "h": 10, "w": 15.25, "uom": "cm" }, "instock": [ { "warehouse": "B", "qty": 15 }, { "warehouse": "C", "qty": 35 } ] } ]
Para obtener instrucciones sobre cómo insertar documentos en MongoDB Compass, consulta Insertar documentos.
var documents = new[] { new BsonDocument { { "item", "journal" }, { "status", "A" }, { "size", new BsonDocument { { "h", 14 }, { "w", 21 }, { "uom", "cm" } } }, { "instock", new BsonArray { new BsonDocument { { "warehouse", "A" }, { "qty", 5 } } } } }, new BsonDocument { { "item", "notebook" }, { "status", "A" }, { "size", new BsonDocument { { "h", 8.5 }, { "w", 11 }, { "uom", "in" } } }, { "instock", new BsonArray { new BsonDocument { { "warehouse", "C" }, { "qty", 5 } } } } }, new BsonDocument { { "item", "paper" }, { "status", "D" }, { "size", new BsonDocument { { "h", 8.5 }, { "w", 11 }, { "uom", "in" } } }, { "instock", new BsonArray { new BsonDocument { { "warehouse", "A" }, { "qty", 60 } } } } }, new BsonDocument { { "item", "planner" }, { "status", "D" }, { "size", new BsonDocument { { "h", 22.85 }, { "w", 30 }, { "uom", "cm" } } }, { "instock", new BsonArray { new BsonDocument { { "warehouse", "A" }, { "qty", 40 } } } } }, new BsonDocument { { "item", "postcard" }, { "status", "A" }, { "size", new BsonDocument { { "h", 10 }, { "w", 15.25 }, { "uom", "cm" } } }, { "instock", new BsonArray { new BsonDocument { { "warehouse", "B" }, { "qty", 15 } }, new BsonDocument { { "warehouse", "C" }, { "qty", 35 } } } } } }; collection.InsertMany(documents);
docs := []any{ bson.D{ {"item", "journal"}, {"status", "A"}, {"size", bson.D{ {"h", 14}, {"w", 21}, {"uom", "cm"}, }}, {"instock", bson.A{ bson.D{ {"warehouse", "A"}, {"qty", 5}, }, }}, }, bson.D{ {"item", "notebook"}, {"status", "A"}, {"size", bson.D{ {"h", 8.5}, {"w", 11}, {"uom", "in"}, }}, {"instock", bson.A{ bson.D{ {"warehouse", "EC"}, {"qty", 5}, }, }}, }, bson.D{ {"item", "paper"}, {"status", "D"}, {"size", bson.D{ {"h", 8.5}, {"w", 11}, {"uom", "in"}, }}, {"instock", bson.A{ bson.D{ {"warehouse", "A"}, {"qty", 60}, }, }}, }, bson.D{ {"item", "planner"}, {"status", "D"}, {"size", bson.D{ {"h", 22.85}, {"w", 30}, {"uom", "cm"}, }}, {"instock", bson.A{ bson.D{ {"warehouse", "A"}, {"qty", 40}, }, }}, }, bson.D{ {"item", "postcard"}, {"status", "A"}, {"size", bson.D{ {"h", 10}, {"w", 15.25}, {"uom", "cm"}, }}, {"instock", bson.A{ bson.D{ {"warehouse", "B"}, {"qty", 15}, }, bson.D{ {"warehouse", "EC"}, {"qty", 35}, }, }}, }, } result, err := coll.InsertMany(context.TODO(), docs)
Publisher<Success> insertManyPublisher = collection.insertMany(asList( Document.parse("{ item: 'journal', status: 'A', size: { h: 14, w: 21, uom: 'cm' }, instock: [ { warehouse: 'A', qty: 5 }]}"), Document.parse("{ item: 'notebook', status: 'A', size: { h: 8.5, w: 11, uom: 'in' }, instock: [ { warehouse: 'C', qty: 5}]}"), Document.parse("{ item: 'paper', status: 'D', size: { h: 8.5, w: 11, uom: 'in' }, instock: [ { warehouse: 'A', qty: 60 }]}"), Document.parse("{ item: 'planner', status: 'D', size: { h: 22.85, w: 30, uom: 'cm' }, instock: [ { warehouse: 'A', qty: 40}]}"), Document.parse("{ item: 'postcard', status: 'A', size: { h: 10, w: 15.25, uom: 'cm' }, " + "instock: [ { warehouse: 'B', qty: 15 }, { warehouse: 'C', qty: 35 } ] }") ));
collection.insertMany(asList( Document.parse("{ item: 'journal', status: 'A', size: { h: 14, w: 21, uom: 'cm' }, instock: [ { warehouse: 'A', qty: 5 }]}"), Document.parse("{ item: 'notebook', status: 'A', size: { h: 8.5, w: 11, uom: 'in' }, instock: [ { warehouse: 'C', qty: 5}]}"), Document.parse("{ item: 'paper', status: 'D', size: { h: 8.5, w: 11, uom: 'in' }, instock: [ { warehouse: 'A', qty: 60 }]}"), Document.parse("{ item: 'planner', status: 'D', size: { h: 22.85, w: 30, uom: 'cm' }, instock: [ { warehouse: 'A', qty: 40}]}"), Document.parse("{ item: 'postcard', status: 'A', size: { h: 10, w: 15.25, uom: 'cm' }, " + "instock: [ { warehouse: 'B', qty: 15 }, { warehouse: 'C', qty: 35 } ] }") ));
await db.inventory.insert_many( [ { "item": "journal", "status": "A", "size": {"h": 14, "w": 21, "uom": "cm"}, "instock": [{"warehouse": "A", "qty": 5}], }, { "item": "notebook", "status": "A", "size": {"h": 8.5, "w": 11, "uom": "in"}, "instock": [{"warehouse": "C", "qty": 5}], }, { "item": "paper", "status": "D", "size": {"h": 8.5, "w": 11, "uom": "in"}, "instock": [{"warehouse": "A", "qty": 60}], }, { "item": "planner", "status": "D", "size": {"h": 22.85, "w": 30, "uom": "cm"}, "instock": [{"warehouse": "A", "qty": 40}], }, { "item": "postcard", "status": "A", "size": {"h": 10, "w": 15.25, "uom": "cm"}, "instock": [{"warehouse": "B", "qty": 15}, {"warehouse": "C", "qty": 35}], }, ] )
await db.collection('inventory').insertMany([ { item: 'journal', status: 'A', size: { h: 14, w: 21, uom: 'cm' }, instock: [{ warehouse: 'A', qty: 5 }] }, { item: 'notebook', status: 'A', size: { h: 8.5, w: 11, uom: 'in' }, instock: [{ warehouse: 'C', qty: 5 }] }, { item: 'paper', status: 'D', size: { h: 8.5, w: 11, uom: 'in' }, instock: [{ warehouse: 'A', qty: 60 }] }, { item: 'planner', status: 'D', size: { h: 22.85, w: 30, uom: 'cm' }, instock: [{ warehouse: 'A', qty: 40 }] }, { item: 'postcard', status: 'A', size: { h: 10, w: 15.25, uom: 'cm' }, instock: [ { warehouse: 'B', qty: 15 }, { warehouse: 'C', qty: 35 } ] } ]);
$insertManyResult = $db->inventory->insertMany([ [ 'item' => 'journal', 'status' => 'A', 'size' => ['h' => 14, 'w' => 21, 'uom' => 'cm'], 'instock' => [ ['warehouse' => 'A', 'qty' => 5], ], ], [ 'item' => 'notebook', 'status' => 'A', 'size' => ['h' => 8.5, 'w' => 11, 'uom' => 'in'], 'instock' => [ ['warehouse' => 'C', 'qty' => 5], ], ], [ 'item' => 'paper', 'status' => 'D', 'size' => ['h' => 8.5, 'w' => 11, 'uom' => 'in'], 'instock' => [ ['warehouse' => 'A', 'qty' => 60], ], ], [ 'item' => 'planner', 'status' => 'D', 'size' => ['h' => 22.85, 'w' => 30, 'uom' => 'cm'], 'instock' => [ ['warehouse' => 'A', 'qty' => 40], ], ], [ 'item' => 'postcard', 'status' => 'A', 'size' => ['h' => 10, 'w' => 15.25, 'uom' => 'cm'], 'instock' => [ ['warehouse' => 'B', 'qty' => 15], ['warehouse' => 'C', 'qty' => 35], ], ], ]);
db.inventory.insert_many( [ { "item": "journal", "status": "A", "size": {"h": 14, "w": 21, "uom": "cm"}, "instock": [{"warehouse": "A", "qty": 5}], }, { "item": "notebook", "status": "A", "size": {"h": 8.5, "w": 11, "uom": "in"}, "instock": [{"warehouse": "C", "qty": 5}], }, { "item": "paper", "status": "D", "size": {"h": 8.5, "w": 11, "uom": "in"}, "instock": [{"warehouse": "A", "qty": 60}], }, { "item": "planner", "status": "D", "size": {"h": 22.85, "w": 30, "uom": "cm"}, "instock": [{"warehouse": "A", "qty": 40}], }, { "item": "postcard", "status": "A", "size": {"h": 10, "w": 15.25, "uom": "cm"}, "instock": [{"warehouse": "B", "qty": 15}, {"warehouse": "C", "qty": 35}], }, ] )
client[:inventory].insert_many([{ item: 'journal', status: 'A', size: { h: 14, w: 21, uom: 'cm' }, instock: [ { warehouse: 'A', qty: 5 }] }, { item: 'notebook', status: 'A', size: { h: 8.5, w: 11, uom: 'in' }, instock: [ { warehouse: 'C', qty: 5 }] }, { item: 'paper', status: 'D', size: { h: 8.5, w: 11, uom: 'in' }, instock: [ { warehouse: 'A', qty: 60 }] }, { item: 'planner', status: 'D', size: { h: 22.85, w: 30, uom: 'cm' }, instock: [ { warehouse: 'A', qty: 40 }] }, { item: 'postcard', status: 'A', size: { h: 10, w: 15.25, uom: 'cm' }, instock: [ { warehouse: 'B', qty: 15 }, { warehouse: 'C', qty: 35 }] }])
collection.insertMany(Seq( Document("""{ item: "journal", status: "A", size: { h: 14, w: 21, uom: "cm" }, instock: [ { warehouse: "A", qty: 5 } ] }"""), Document("""{ item: "notebook", status: "A", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "C", qty: 5 } ] }"""), Document("""{ item: "paper", status: "D", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "A", qty: 60 } ] }"""), Document("""{ item: "planner", status: "D", size: { h: 22.85, w: 30, uom: "cm" }, instock: [ { warehouse: "A", qty: 40 } ] }"""), Document("""{ item: "postcard", status: "A", size: { h: 10, w: 15.25, uom: "cm" }, instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }""") )).execute()
Devuelva todos los campos en los documentos coincidentes
Si no especificas un documento de proyección, el método db.collection.find() devuelve todos los campos de los documentos que coinciden.
Si no especifica un filtro de proyección, el método MongoCollection.Find() devuelve todos los campos en los documentos coincidentes.
Si no especifica un filtro de proyección, el método Find() devuelve todos los campos en los documentos coincidentes.
Si no especificas una proyección, el método com.mongodb.reactivestreams.client.MongoCollection.find devuelve todos los campos en los documentos coincidentes.
Si no especificas una proyección, el método com.mongodb.client.MongoCollection.find devuelve todos los campos de los documentos coincidentes.
Si no especifica un filtro de proyección, el método devuelve todos los campos en los documentos find coincidentes.
Si no especifica un documento de proyección, el método find() arroja todos los campos de los documentos coincidentes.
Si no especificas un documento de proyección, el método find() devuelve todos los campos de los documentos coincidentes.
Si no se especifica un documento de proyección, el método find devuelve todos los campos en los documentos coincidentes.
Si no especifica un documento de proyección, el método find() devuelve todos los campos de los documentos coincidentes.
Si no especifica una proyección, el método collection.find() devuelve todos los campos en los documentos coincidentes.
El siguiente ejemplo devuelve todos los campos de todos los documentos en la colección inventory donde el status es igual a "A":
db.inventory.find( { status: "A" } )
Copie la siguiente expresión en el Filter campo:
{ status: "A" } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var result = collection.Find(filter).ToList();
cursor, err := coll.Find( context.TODO(), bson.D{{"status", "A"}}, )
FindPublisher<Document> findPublisher = collection.find(eq("status", "A"));
FindIterable<Document> findIterable = collection.find(eq("status", "A"));
cursor = db.inventory.find({"status": "A"})
const cursor = db.collection('inventory').find({ status: 'A' });
$cursor = $db->inventory->find(['status' => 'A']);
cursor = db.inventory.find({"status": "A"})
client[:inventory].find(status: 'A')
var findObservable = collection.find(equal("status", "A"))
La operación corresponde a la siguiente instrucción SQL:
SELECT * from inventory WHERE status = "A"
Devuelve los campos especificados y solo el _id campo
Una proyección puede incluir explícitamente varios campos estableciendo el <field> en 1 en el documento de proyección. La siguiente operación devuelve todos los documentos que coinciden con el query. En el conjunto de resultados, solo los campos item, status y, por defecto, _id se devuelven en los documentos coincidentes.
db.inventory.find( { status: "A" }, { item: 1, status: 1 } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1 } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status"); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")).projection(include("item", "status"));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")).projection(include("item", "status"));
cursor = db.inventory.find({"status": "A"}, {"item": 1, "status": 1})
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1 });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1]], );
cursor = db.inventory.find({"status": "A"}, {"item": 1, "status": 1})
client[:inventory].find({ status: 'A' }, projection: { item: 1, status: 1 })
findObservable = collection.find(equal("status", "A")).projection(include("item", "status"))
La operación corresponde a la siguiente instrucción SQL:
SELECT _id, item, status from inventory WHERE status = "A"
Suprimir el _id campo
Puedes remover el campo _id de los resultados estableciéndolo en 0 en la proyección, como en el siguiente ejemplo:
db.inventory.find( { status: "A" }, { item: 1, status: 1, _id: 0 } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, _id: 0 } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Exclude("_id"); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"_id", 0}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), excludeId()));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), excludeId()));
cursor = db.inventory.find({"status": "A"}, {"item": 1, "status": 1, "_id": 0})
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, _id: 0 });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, '_id' => 0]], );
cursor = db.inventory.find({"status": "A"}, {"item": 1, "status": 1, "_id": 0})
client[:inventory].find({ status: 'A' }, projection: { item: 1, status: 1, _id: 0 })
findObservable = collection.find(equal("status", "A")) .projection(fields(include("item", "status"), excludeId()))
La operación corresponde a la siguiente instrucción SQL:
SELECT item, status from inventory WHERE status = "A"
Nota
Con la excepción del campo _id, no es posible combinar instrucciones de inclusión y exclusión en documentos de proyección.
Devuelva todos los campos excepto los excluidos
En lugar de listar los campos a devolver en el documento correspondiente, se puede usar una proyección para excluir campos específicos. El siguiente ejemplo devuelve todos los campos excepto los campos status y instock en los documentos coincidentes:
db.inventory.find( { status: "A" }, { status: 0, instock: 0 } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ status: 0, instock: 0 } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Exclude("status").Exclude("instock"); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"status", 0}, {"instock", 0}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")).projection(exclude("item", "status"));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")).projection(exclude("item", "status"));
cursor = db.inventory.find({"status": "A"}, {"status": 0, "instock": 0})
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ status: 0, instock: 0 });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['status' => 0, 'instock' => 0]], );
cursor = db.inventory.find({"status": "A"}, {"status": 0, "instock": 0})
client[:inventory].find({ status: 'A' }, projection: { status: 0, instock: 0 })
findObservable = collection.find(equal("status", "A")).projection(exclude("item", "status"))
Nota
Con la excepción del campo _id, no es posible combinar instrucciones de inclusión y exclusión en documentos de proyección.
Devolver campos específicos en documentos incrustados
Puedes devolver campos específicos en un documento incrustado. Utiliza la notación de puntos para referirte al campo incrustado y establecerlo en 1 en el documento de proyección.
El siguiente ejemplo devuelve:
El campo
_id(devuelto por defecto),El campo
item,El campo
status,El campo
uomen el documentosize.
El campo uom sigue incrustado en el documento size.
db.inventory.find( { status: "A" }, { item: 1, status: 1, "size.uom": 1 } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, "size.uom": 1 } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Include("size.uom"); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"size.uom", 1}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")).projection(include("item", "status", "size.uom"));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")).projection(include("item", "status", "size.uom"));
cursor = db.inventory.find({"status": "A"}, {"item": 1, "status": 1, "size.uom": 1})
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, 'size.uom': 1 });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, 'size.uom' => 1]], );
cursor = db.inventory.find({"status": "A"}, {"item": 1, "status": 1, "size.uom": 1})
client[:inventory].find({ status: 'A' }, projection: { 'item' => 1, 'status' => 1, 'size.uom' => 1 })
findObservable = collection.find(equal("status", "A")).projection(include("item", "status", "size.uom"))
También puedes especificar campos incrustados utilizando la forma anidada. Por ejemplo, { item: 1, status: 1, size: { uom: 1 } }.
Ocultar campos específicos en documentos incrustados
Puedes suprimir campos específicos en un documento incrustado. Utiliza la notación de puntos para referirte al campo incrustado en el documento de proyección y establecerlo en 0.
El siguiente ejemplo especifica una proyección para excluir el campo uom dentro del documento size. Todos los demás campos se devuelven en los documentos coincidentes:
db.inventory.find( { status: "A" }, { "size.uom": 0 } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ "size.uom": 0 } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Exclude("size.uom"); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"size.uom", 0}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")).projection(exclude("size.uom"));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")).projection(exclude("size.uom"));
cursor = db.inventory.find({"status": "A"}, {"size.uom": 0})
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ 'size.uom': 0 });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['size.uom' => 0]], );
cursor = db.inventory.find({"status": "A"}, {"size.uom": 0})
client[:inventory].find({ status: 'A' }, projection: { 'size.uom' => 0 })
findObservable = collection.find(equal("status", "A")).projection(exclude("size.uom"))
También puedes especificar campos incrustados utilizando la forma anidada. Por ejemplo, { size: { uom: 0 } }.
Proyección en documentos incrustados dentro de un arreglo
Utiliza la notación de puntos para proyectar campos específicos dentro de documentos incrustados en un arreglo.
El siguiente ejemplo especifica una proyección para devolver:
El campo
_id(devuelto por defecto),El campo
item,El campo
status,El campo
qtyen los documentos incrustados en el arregloinstock.
db.inventory.find( { status: "A" }, { item: 1, status: 1, "instock.qty": 1 } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, "instock.qty": 1 } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Include("instock.qty"); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"instock.qty", 1}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")).projection(include("item", "status", "instock.qty"));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")).projection(include("item", "status", "instock.qty"));
cursor = db.inventory.find({"status": "A"}, {"item": 1, "status": 1, "instock.qty": 1})
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, 'instock.qty': 1 });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, 'instock.qty' => 1]], );
cursor = db.inventory.find({"status": "A"}, {"item": 1, "status": 1, "instock.qty": 1})
client[:inventory].find({ status: 'A' }, projection: {'item' => 1, 'status' => 1, 'instock.qty' => 1 })
findObservable = collection.find(equal("status", "A")).projection(include("item", "status", "instock.qty"))
Elementos específicos del proyecto en el arreglo devuelto
Para los campos que contienen arreglos, MongoDB proporciona los siguientes operadores de proyección para manipular arreglos: $elemMatch, $slice y $.
En el siguiente ejemplo, se utiliza el operador de proyección $slice para devolver el último elemento del arreglo instock:
db.inventory.find( { status: "A" }, { item: 1, status: 1, instock: { $slice: -1 } } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, instock: { $slice: -1 } } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Slice("instock", -1); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"instock", bson.D{ {"$slice", -1}, }}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, instock: { $slice: -1 } });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, 'instock' => ['$slice' => -1]]], );
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
client[:inventory].find({ status: 'A' }, projection: {'item' => 1, 'status' => 1, 'instock' => { '$slice' => -1 } })
findObservable = collection.find(equal("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)))
$elemMatch, $slice y $ son las únicas formas de proyectar elementos específicos para incluirlos en la matriz devuelta. Por ejemplo, { "instock.0": 1 } no se pueden proyectar elementos específicos de la matriz usando el índice de la matriz; por ejemplo, la proyección no proyectará la matriz con el primer elemento.
Para los campos que contienen arreglos, MongoDB proporciona los siguientes operadores de proyección para manipular arreglos: $elemMatch, $slice y $.
En el siguiente ejemplo, se utiliza el operador de proyección $slice para devolver el último elemento del arreglo instock:
db.inventory.find( { status: "A" }, { item: 1, status: 1, instock: { $slice: -1 } } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, instock: { $slice: -1 } } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Slice("instock", -1); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"instock", bson.D{ {"$slice", -1}, }}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, instock: { $slice: -1 } });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, 'instock' => ['$slice' => -1]]], );
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
client[:inventory].find({ status: 'A' }, projection: {'item' => 1, 'status' => 1, 'instock' => { '$slice' => -1 } })
findObservable = collection.find(equal("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)))
Para los campos que contienen arreglos, MongoDB proporciona los siguientes operadores de proyección para manipular arreglos: $elemMatch, $slice y $.
En el siguiente ejemplo, se utiliza el operador de proyección $slice para devolver el último elemento del arreglo instock:
db.inventory.find( { status: "A" }, { item: 1, status: 1, instock: { $slice: -1 } } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, instock: { $slice: -1 } } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Slice("instock", -1); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"instock", bson.D{ {"$slice", -1}, }}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, instock: { $slice: -1 } });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, 'instock' => ['$slice' => -1]]], );
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
client[:inventory].find({ status: 'A' }, projection: {'item' => 1, 'status' => 1, 'instock' => { '$slice' => -1 } })
findObservable = collection.find(equal("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)))
$elemMatch, $slice y $ son la única forma de proyectar elementos específicos para incluir en el arreglo retornado.
Por ejemplo, la siguiente operación no proyectará el arreglo con el primer elemento:
Builders<BsonDocument>.Projection.Include("instock.0")
Para los campos que contienen arreglos, MongoDB proporciona los siguientes operadores de proyección para manipular arreglos: $elemMatch, $slice y $.
En el siguiente ejemplo, se utiliza el operador de proyección $slice para devolver el último elemento del arreglo instock:
db.inventory.find( { status: "A" }, { item: 1, status: 1, instock: { $slice: -1 } } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, instock: { $slice: -1 } } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Slice("instock", -1); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"instock", bson.D{ {"$slice", -1}, }}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, instock: { $slice: -1 } });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, 'instock' => ['$slice' => -1]]], );
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
client[:inventory].find({ status: 'A' }, projection: {'item' => 1, 'status' => 1, 'instock' => { '$slice' => -1 } })
findObservable = collection.find(equal("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)))
$elemMatch, $slice, y $ son los únicos operadores que puedes utilizar para proyectar elementos específicos a incluir en el arreglo devuelto. Por ejemplo, no puedes proyectar elementos específicos del arreglo usando el índice del arreglo; por ejemplo, La proyección { "instock.0": 1 } no proyecta el arreglo con el primer elemento.
Para los campos que contienen arreglos, MongoDB proporciona los siguientes operadores de proyección para manipular arreglos: $elemMatch, $slice y $.
En el siguiente ejemplo, se utiliza el operador de proyección $slice para devolver el último elemento del arreglo instock:
db.inventory.find( { status: "A" }, { item: 1, status: 1, instock: { $slice: -1 } } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, instock: { $slice: -1 } } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Slice("instock", -1); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"instock", bson.D{ {"$slice", -1}, }}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, instock: { $slice: -1 } });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, 'instock' => ['$slice' => -1]]], );
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
client[:inventory].find({ status: 'A' }, projection: {'item' => 1, 'status' => 1, 'instock' => { '$slice' => -1 } })
findObservable = collection.find(equal("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)))
$elemMatch, $slice y $ son las únicas formas de proyectar elementos específicos para incluirlos en la matriz devuelta. Por ejemplo, include("instock.0") no se pueden proyectar elementos específicos de la matriz usando el índice de la matriz; por ejemplo, la proyección no proyectará la matriz con el primer elemento.
Para los campos que contienen arreglos, MongoDB proporciona los siguientes operadores de proyección para manipular arreglos: $elemMatch, $slice y $.
En el siguiente ejemplo, se utiliza el operador de proyección $slice para devolver el último elemento del arreglo instock:
db.inventory.find( { status: "A" }, { item: 1, status: 1, instock: { $slice: -1 } } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, instock: { $slice: -1 } } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Slice("instock", -1); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"instock", bson.D{ {"$slice", -1}, }}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, instock: { $slice: -1 } });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, 'instock' => ['$slice' => -1]]], );
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
client[:inventory].find({ status: 'A' }, projection: {'item' => 1, 'status' => 1, 'instock' => { '$slice' => -1 } })
findObservable = collection.find(equal("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)))
$elemMatch, $slice y $ son las únicas formas de proyectar elementos específicos para incluirlos en la matriz devuelta. Por ejemplo, include("instock.0") no se pueden proyectar elementos específicos de la matriz usando el índice de la matriz; por ejemplo, la proyección no proyectará la matriz con el primer elemento.
Para los campos que contienen arreglos, MongoDB proporciona los siguientes operadores de proyección para manipular arreglos: $elemMatch, $slice y $.
En el siguiente ejemplo, se utiliza el operador de proyección $slice para devolver el último elemento del arreglo instock:
db.inventory.find( { status: "A" }, { item: 1, status: 1, instock: { $slice: -1 } } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, instock: { $slice: -1 } } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Slice("instock", -1); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"instock", bson.D{ {"$slice", -1}, }}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, instock: { $slice: -1 } });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, 'instock' => ['$slice' => -1]]], );
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
client[:inventory].find({ status: 'A' }, projection: {'item' => 1, 'status' => 1, 'instock' => { '$slice' => -1 } })
findObservable = collection.find(equal("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)))
$elemMatch, $slice, y $ son los únicos operadores que puedes utilizar para proyectar elementos específicos a incluir en el arreglo devuelto. Por ejemplo, no puedes proyectar elementos específicos del arreglo usando el índice del arreglo; por ejemplo, La proyección { "instock.0": 1 } no proyecta el arreglo con el primer elemento.
Para los campos que contienen arreglos, MongoDB proporciona los siguientes operadores de proyección para manipular arreglos: $elemMatch, $slice y $.
En el siguiente ejemplo, se utiliza el operador de proyección $slice para devolver el último elemento del arreglo instock:
db.inventory.find( { status: "A" }, { item: 1, status: 1, instock: { $slice: -1 } } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, instock: { $slice: -1 } } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Slice("instock", -1); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"instock", bson.D{ {"$slice", -1}, }}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, instock: { $slice: -1 } });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, 'instock' => ['$slice' => -1]]], );
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
client[:inventory].find({ status: 'A' }, projection: {'item' => 1, 'status' => 1, 'instock' => { '$slice' => -1 } })
findObservable = collection.find(equal("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)))
$elemMatch, $slice y $ son las únicas formas de proyectar elementos específicos para incluirlos en la matriz devuelta. Por ejemplo, { "instock.0": 1 } no se pueden proyectar elementos específicos de la matriz usando el índice de la matriz; por ejemplo, la proyección no proyectará la matriz con el primer elemento.
Para los campos que contienen arreglos, MongoDB proporciona los siguientes operadores de proyección para manipular arreglos: $elemMatch, $slice y $.
En el siguiente ejemplo, se utiliza el operador de proyección $slice para devolver el último elemento del arreglo instock:
db.inventory.find( { status: "A" }, { item: 1, status: 1, instock: { $slice: -1 } } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, instock: { $slice: -1 } } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Slice("instock", -1); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"instock", bson.D{ {"$slice", -1}, }}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, instock: { $slice: -1 } });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, 'instock' => ['$slice' => -1]]], );
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
client[:inventory].find({ status: 'A' }, projection: {'item' => 1, 'status' => 1, 'instock' => { '$slice' => -1 } })
findObservable = collection.find(equal("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)))
$elemMatch, $slice y $ son las únicas formas de proyectar elementos específicos para incluirlos en la matriz devuelta. Por ejemplo, [ "instock.0" => 1 ] no se pueden proyectar elementos específicos de la matriz usando el índice de la matriz; por ejemplo, la proyección no proyectará la matriz con el primer elemento.
Para los campos que contienen arreglos, MongoDB proporciona los siguientes operadores de proyección para manipular arreglos: $elemMatch, $slice y $.
En el siguiente ejemplo, se utiliza el operador de proyección $slice para devolver el último elemento del arreglo instock:
db.inventory.find( { status: "A" }, { item: 1, status: 1, instock: { $slice: -1 } } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, instock: { $slice: -1 } } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Slice("instock", -1); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"instock", bson.D{ {"$slice", -1}, }}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, instock: { $slice: -1 } });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, 'instock' => ['$slice' => -1]]], );
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
client[:inventory].find({ status: 'A' }, projection: {'item' => 1, 'status' => 1, 'instock' => { '$slice' => -1 } })
findObservable = collection.find(equal("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)))
$elemMatch, $slice y $ son las únicas formas de proyectar elementos específicos para incluirlos en la matriz devuelta. Por ejemplo, { "instock.0": 1 } no se pueden proyectar elementos específicos de la matriz usando el índice de la matriz; por ejemplo, la proyección no proyectará la matriz con el primer elemento.
Para los campos que contienen arreglos, MongoDB proporciona los siguientes operadores de proyección para manipular arreglos: $elemMatch, $slice y $.
En el siguiente ejemplo, se utiliza el operador de proyección $slice para devolver el último elemento del arreglo instock:
db.inventory.find( { status: "A" }, { item: 1, status: 1, instock: { $slice: -1 } } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, instock: { $slice: -1 } } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Slice("instock", -1); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"instock", bson.D{ {"$slice", -1}, }}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, instock: { $slice: -1 } });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, 'instock' => ['$slice' => -1]]], );
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
client[:inventory].find({ status: 'A' }, projection: {'item' => 1, 'status' => 1, 'instock' => { '$slice' => -1 } })
findObservable = collection.find(equal("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)))
$elemMatch, $slice y $ son las únicas formas de proyectar elementos específicos para incluirlos en la matriz devuelta. Por ejemplo, { "instock.0" => 1 } no se pueden proyectar elementos específicos de la matriz usando el índice de la matriz; por ejemplo, la proyección no proyectará la matriz con el primer elemento.
Para los campos que contienen arreglos, MongoDB proporciona los siguientes operadores de proyección para manipular arreglos: $elemMatch, $slice y $.
En el siguiente ejemplo, se utiliza el operador de proyección $slice para devolver el último elemento del arreglo instock:
db.inventory.find( { status: "A" }, { item: 1, status: 1, instock: { $slice: -1 } } )
Copie la siguiente expresión en el campo Filter:
{ status: "A" } Haz clic en Options para abrir las opciones de query adicionales.
Copie la siguiente expresión en el campo Project:
{ item: 1, status: 1, instock: { $slice: -1 } } Haga clic en Find.
var filter = Builders<BsonDocument>.Filter.Eq("status", "A"); var projection = Builders<BsonDocument>.Projection.Include("item").Include("status").Slice("instock", -1); var result = collection.Find<BsonDocument>(filter).Project(projection).ToList();
projection := bson.D{ {"item", 1}, {"status", 1}, {"instock", bson.D{ {"$slice", -1}, }}, } cursor, err := coll.Find( context.TODO(), bson.D{ {"status", "A"}, }, options.Find().SetProjection(projection), )
findPublisher = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
Para especificar un documento de proyección, encadena el método com.mongodb.client.FindIterable.projection al método find. El ejemplo utiliza la clase com.mongodb.client.model.Projections para crear los documentos de proyección.
findIterable = collection.find(eq("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)));
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
const cursor = db .collection('inventory') .find({ status: 'A' }) .project({ item: 1, status: 1, instock: { $slice: -1 } });
$cursor = $db->inventory->find( ['status' => 'A'], ['projection' => ['item' => 1, 'status' => 1, 'instock' => ['$slice' => -1]]], );
cursor = db.inventory.find( {"status": "A"}, {"item": 1, "status": 1, "instock": {"$slice": -1}} )
client[:inventory].find({ status: 'A' }, projection: {'item' => 1, 'status' => 1, 'instock' => { '$slice' => -1 } })
findObservable = collection.find(equal("status", "A")) .projection(fields(include("item", "status"), slice("instock", -1)))
$elemMatch, $slice y $ son las únicas formas de proyectar elementos específicos para incluirlos en la matriz devuelta. Por ejemplo, include("instock.0") no se pueden proyectar elementos específicos de la matriz usando el índice de la matriz; por ejemplo, la proyección no proyectará la matriz con el primer elemento.
Campos de proyecto con expresiones de agregación
Pueden especificarse expresiones de agregación en una proyección de query. Las expresiones de agregación le permiten proyectar nuevos campos y modificar los valores de los campos existentes.
Por ejemplo, la siguiente operación utiliza expresiones de agregación para sobrescribir el valor del campo status y proyectar nuevos campos area y reportNumber.
Nota
En el siguiente ejemplo, se utiliza la sintaxis de MongoDB Shell. Para ver ejemplos de driver de proyección con agregación, se debe consultar la documentación de driver.
db.inventory.find( { }, { _id: 0, item: 1, status: { $switch: { branches: [ { case: { $eq: [ "$status", "A" ] }, then: "Available" }, { case: { $eq: [ "$status", "D" ] }, then: "Discontinued" }, ], default: "No status found" } }, area: { $concat: [ { $toString: { $multiply: [ "$size.h", "$size.w" ] } }, " ", "$size.uom" ] }, reportNumber: { $literal: 1 } } )
[ { item: 'journal', status: 'Available', area: '294 cm', reportNumber: 1 }, { item: 'planner', status: 'Discontinued', area: '685.5 cm', reportNumber: 1 }, { item: 'notebook', status: 'Available', area: '93.5 in', reportNumber: 1 }, { item: 'paper', status: 'Discontinued', area: '93.5 in', reportNumber: 1 }, { item: 'postcard', status: 'Available', area: '152.5 cm', reportNumber: 1 } ]
Consideraciones adicionales
Cuando se usa una etapa de agregación
$project, normalmente debería ser la última etapa del pipeline y se utiliza para especificar qué campos devolver al cliente.Usar una etapa
$projectal principio o en medio de un pipeline para reducir el número de campos que se pasan a las etapas posteriores del pipeline es poco probable que mejore el rendimiento, ya que la base de datos realiza esta optimización automáticamente.MongoDB aplica restricciones adicionales con respecto a las proyecciones. Consulta restricciones de proyección para obtener más detalles.