- MongoDB CRUD Operations >
- Query Documents >
- Project Fields to Return from Query
Project Fields to Return from Query¶
By default, queries in MongoDB return all fields in matching documents. To limit the amount of data that MongoDB sends to applications, you can include a projection document to specify or restrict fields to return.
- Mongo Shell
- Python
- Java (Sync)
- Node.js
- PHP
- Other
This page provides examples of query operations with projection using the
db.collection.find()
method in the
mongo
shell. The examples on this page use the
inventory
collection. To populate the inventory
collection, run the following:
This page provides examples of query operations with projection using the
pymongo.collection.Collection.find()
method in the
PyMongo
Python driver. The examples on this page use the inventory
collection. To populate the inventory
collection, run the
following:
This page provides examples of query operations with projection using the com.mongodb.client.MongoCollection.find method in the MongoDB Java Synchronous Driver.
Tip
The driver provides com.mongodb.client.model.Filters helper methods to facilitate the creation of filter documents. The examples on this page use these methods to create the filter documents.
The examples on this page use the inventory
collection. To populate the inventory
collection, run the
following:
This page provides examples of query operations with projection using the
Collection.find() method in
the MongoDB Node.js Driver.
The examples on this page use the inventory
collection. To
populate the inventory
collection, run the following:
This page provides examples of query operations with projection using the
MongoDB\Collection::find()
method in the
MongoDB PHP Library.
The examples on this page use the inventory
collection. To
populate the inventory
collection, run the following:
This page provides examples of query operations with projection using the com.mongodb.reactivestreams.client.MongoCollection.find method in the MongoDB Java Reactive Streams Driver.
The examples on this page use the inventory
collection. To populate the inventory
collection, run the
following:
This page provides examples of query operations with projection using the
MongoCollection.Find()
method in the
MongoDB C# Driver.
The examples on this page use the inventory
collection. To
populate the inventory
collection, run the following:
This page provides examples of query operations with projection using the
MongoDB::Collection::find() method
in the
MongoDB Perl Driver.
The examples on this page use the inventory
collection. To
populate the inventory
collection, run the following:
This page provides examples of query operations with projection using the
Mongo::Collection#find()
method in the
MongoDB Ruby Driver.
The examples on this page use the inventory
collection. To
populate the inventory
collection, run the following:
This page provides examples of query operations with projection using the
collection.find() method
in the
MongoDB Scala Driver.
The examples on this page use the inventory
collection. To
populate the inventory
collection, run the following:
- Mongo Shell
- Python
- Java (Sync)
- Node.js
- PHP
- Other
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 } ] }
]);
You can run the operation in the web shell below:
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}]}])
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 } ] }")
));
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 }]}
])
.then(function(result) {
// process result
})
$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],
],
],
]);
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 } ] }")
));
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);
$db->coll("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()
Return All Fields in Matching Documents¶
- Mongo Shell
- Python
- Java (Sync)
- Node.js
- PHP
- Other
If you do not specify a projection document, the
db.collection.find()
method returns all fields in the
matching documents.
If you do not specify a projection document, the
find()
method returns
all fields in the matching documents.
If you do not specify a projection, the com.mongodb.client.MongoCollection.find method returns all fields in the matching documents.
If you do not specify a projection document, the find() method yields all fields in the matching documents.
If you do not specify a projection document, the
find()
method returns all fields in the matching documents.
If you do not specify a projection, the com.mongodb.reactivestreams.client.MongoCollection.find method returns all fields in the matching documents.
If you do not specify a projection filter, the MongoCollection.Find() method returns all fields in the matching documents.
If you do not specify a projection document, the find() method returns all fields in the matching documents.
If you do not specify a projection document, the find() method returns all fields in the matching documents.
If you do not specify a projection, the collection.find() method returns all fields in the matching documents.
The following example returns all fields from all documents in the
inventory
collection where the status
equals "A"
:
- Mongo Shell
- Python
- Java (Sync)
- Node.js
- PHP
- Other
db.inventory.find( { status: "A" } )
cursor = db.inventory.find({"status": "A"})
FindIterable<Document> findIterable = collection.find(eq("status", "A"));
var cursor = db.collection('inventory').find({
status: "A"
});
$cursor = $db->inventory->find(['status' => 'A']);
FindPublisher<Document> findPublisher = collection.find(eq("status", "A"));
var filter = Builders<BsonDocument>.Filter.Eq("status", "A");
var result = collection.Find(filter).ToList();
$cursor = $db->coll("inventory")->find( { status => "A" } );
client[:inventory].find(status: 'A')
var findObservable = collection.find(equal("status", "A"))
The operation corresponds to the following SQL statement:
SELECT * from inventory WHERE status = "A"
Return the Specified Fields and the _id
Field Only¶
A projection can explicitly include several fields by setting the
<field>
to 1
in the projection document. The following
operation returns all documents that match the query. In the result
set, only the item
, status
and, by default, the _id
fields
return in the matching documents.
- Mongo Shell
- Python
- Java (Sync)
- Node.js
- PHP
- Other
db.inventory.find( { status: "A" }, { item: 1, status: 1 } )
cursor = db.inventory.find(
{"status": "A"}, {"item": 1, "status": 1})
To specify a projection document, chain the
com.mongodb.client.FindIterable.projection method to the
find
method. The example uses the
com.mongodb.client.model.Projections class to create the
projection documents.
findIterable = collection.find(eq("status", "A")).projection(include("item", "status"));
var cursor = db.collection('inventory').find({
status: "A"
}).project({ item: 1, status: 1 });
$cursor = $db->inventory->find(
['status' => 'A'],
['projection' => ['item' => 1, 'status' => 1]]
);
findPublisher = collection.find(eq("status", "A")).projection(include("item", "status"));
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();
$cursor = $db->coll("inventory")->find(
{ status => "A" }, { projection => { item => 1, status => 1 } }
);
client[:inventory].find({ status: 'A' },
projection: { item: 1, status: 1 })
findObservable = collection.find(equal("status", "A")).projection(include("item", "status"))
The operation corresponds to the following SQL statement:
SELECT _id, item, status from inventory WHERE status = "A"
Suppress _id
Field¶
You can remove the _id
field from the results by setting its
exclusion <field>
to 0
in the projection, as in the
following example:
- Mongo Shell
- Python
- Java (Sync)
- Node.js
- PHP
- Other
db.inventory.find( { status: "A" }, { item: 1, status: 1, _id: 0 } )
cursor = db.inventory.find(
{"status": "A"}, {"item": 1, "status": 1, "_id": 0})
To specify a projection document, chain the
com.mongodb.client.FindIterable.projection method to the
find
method. The example uses the
com.mongodb.client.model.Projections class to create the
projection documents.
findIterable = collection.find(eq("status", "A"))
.projection(fields(include("item", "status"), excludeId()));
var 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]]
);
findPublisher = collection.find(eq("status", "A"))
.projection(fields(include("item", "status"), excludeId()));
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();
$cursor = $db->coll("inventory")->find(
{ status => "A" }, { projection => { 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()))
The operation corresponds to the following SQL statement:
SELECT item, status from inventory WHERE status = "A"
Return All But the Excluded Fields¶
Instead of listing the fields to return in the matching document, you
can use a projection to exclude specific fields. The following example
which returns all fields except for the status
and the instock
fields in the matching documents:
- Mongo Shell
- Python
- Java (Sync)
- Node.js
- PHP
- Other
db.inventory.find( { status: "A" }, { status: 0, instock: 0 } )
cursor = db.inventory.find(
{"status": "A"}, {"status": 0, "instock": 0})
To specify a projection document, chain the
com.mongodb.client.FindIterable.projection method to the
find
method. The example uses the
com.mongodb.client.model.Projections class to create the
projection documents.
findIterable = collection.find(eq("status", "A")).projection(exclude("item", "status"));
var cursor = db.collection('inventory').find({
status: "A"
}).project({ status: 0, instock: 0 });
$cursor = $db->inventory->find(
['status' => 'A'],
['projection' => ['status' => 0, 'instock' => 0]]
);
findPublisher = collection.find(eq("status", "A")).projection(exclude("item", "status"));
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();
$cursor = $db->coll("inventory")->find(
{ status => "A" }, { projection => { status => 0, instock => 0 } }
);
client[:inventory].find({ status: 'A' },
projection: { status: 0, instock: 0 })
findObservable = collection.find(equal("status", "A")).projection(exclude("item", "status"))
With the exception of the _id
field, you cannot combine inclusion
and exclusion statements in projection documents.
Return Specific Fields in Embedded Documents¶
You can return specific fields in an embedded document. Use the
dot notation to refer to the embedded
field and set to 1
in the projection document.
The following example returns: the _id
field (returned by default),
item
field, status
field, and the uom
field in the size
document; the uom
field remains embedded in the size
document.
- Mongo Shell
- Python
- Java (Sync)
- Node.js
- PHP
- Other
db.inventory.find(
{ status: "A" },
{ item: 1, status: 1, "size.uom": 1 }
)
cursor = db.inventory.find(
{"status": "A"}, {"item": 1, "status": 1, "size.uom": 1})
To specify a projection document, chain the
com.mongodb.client.FindIterable.projection method to the
find
method. The example uses the
com.mongodb.client.model.Projections class to create the
projection documents.
findIterable = collection.find(eq("status", "A")).projection(include("item", "status", "size.uom"));
var 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]]
);
findPublisher = collection.find(eq("status", "A")).projection(include("item", "status", "size.uom"));
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();
$cursor = $db->coll("inventory")->find(
{ status => "A" }, { projection => { 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"))
Suppress Specific Fields in Embedded Documents¶
You can suppress specific fields in an embedded document. Use the
dot notation to refer to the embedded
field in the projection document and set to 0
.
The following example specifies a projection to exclude the uom
field inside the size
document. All other fields are returned in
the matching documents:
- Mongo Shell
- Python
- Java (Sync)
- Node.js
- PHP
- Other
db.inventory.find(
{ status: "A" },
{ "size.uom": 0 }
)
cursor = db.inventory.find({"status": "A"}, {"size.uom": 0})
To specify a projection document, chain the
com.mongodb.client.FindIterable.projection method to the
find
method. The example uses the
com.mongodb.client.model.Projections class to create the
projection documents.
findIterable = collection.find(eq("status", "A")).projection(exclude("size.uom"));
var cursor = db.collection('inventory').find({
status: "A"
}).project({ "size.uom": 0 });
$cursor = $db->inventory->find(
['status' => 'A'],
['projection' => ['size.uom' => 0]]
);
findPublisher = collection.find(eq("status", "A")).projection(exclude("size.uom"));
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();
$cursor = $db->coll("inventory")->find(
{ status => "A" }, { projection => { "size.uom" => 0 } }
);
client[:inventory].find({ status: 'A' },
projection: { 'size.uom' => 0 })
findObservable = collection.find(equal("status", "A")).projection(exclude("size.uom"))
Projection on Embedded Documents in an Array¶
Use dot notation to project specific fields inside documents embedded in an array.
The following example specifies a projection to return the item
field, the status
field, and the qty
field in the documents
embedded in the instock
array. The _id
field is returned by
default.
- Mongo Shell
- Python
- Java (Sync)
- Node.js
- PHP
- Other
db.inventory.find( { status: "A" }, { item: 1, status: 1, "instock.qty": 1 } )
cursor = db.inventory.find(
{"status": "A"}, {"item": 1, "status": 1, "instock.qty": 1})
To specify a projection document, chain the
com.mongodb.client.FindIterable.projection method to the
find
method. The example uses the
com.mongodb.client.model.Projections class to create the
projection documents.
findIterable = collection.find(eq("status", "A")).projection(include("item", "status", "instock.qty"));
var 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]]
);
findPublisher = collection.find(eq("status", "A")).projection(include("item", "status", "instock.qty"));
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();
$cursor = $db->coll("inventory")->find( { status => "A" },
{ projection => { 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"))
Project Specific Array Elements in the Returned Array¶
For fields that contain arrays, MongoDB provides the following
projection operators: $elemMatch
, $slice
,
and $
.
The following example uses the $slice
projection operator
to return just the last element in the instock
array.
- Mongo Shell
- Python
- Java (Sync)
- Node.js
- PHP
- Other
db.inventory.find( { status: "A" }, { name: 1, status: 1, instock: { $slice: -1 } } )
cursor = db.inventory.find(
{"status": "A"},
{"item": 1, "status": 1, "instock": {"$slice": -1}})
To specify a projection document, chain the
com.mongodb.client.FindIterable.projection method to the
find
method. The example uses the
com.mongodb.client.model.Projections class to create the
projection documents.
findIterable = collection.find(eq("status", "A"))
.projection(fields(include("item", "status"), slice("instock", -1)));
var 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]]]
);
findPublisher = collection.find(eq("status", "A"))
.projection(fields(include("item", "status"), slice("instock", -1)));
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();
$cursor = $db->coll("inventory")->find(
{ status => "A" },
{ projection => { 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)))
- Mongo Shell
- Python
- Java (Sync)
- Node.js
- PHP
- Other
$elemMatch
, $slice
, and
$
are the only way to project specific elements
to include in the returned array. For instance, you cannot
project specific array elements using the array index; e.g.
{ "instock.0": 1 }
projection will not project the array
with the first element.
$elemMatch
, $slice
, and
$
are the only way to project specific elements
to include in the returned array. For instance, you cannot
project specific array elements using the array index; e.g.
{ "instock.0": 1 }
projection will not project the array
with the first element.
$elemMatch
, $slice
, and
$
are the only way to project specific elements
to include in the returned array. For instance, you cannot
project specific array elements using the array index; e.g.
include("instock.0")
projection will not project the array
with the first element.
$elemMatch
, $slice
, and
$
are the only way to project specific elements
to include in the returned array. For instance, you cannot
project specific array elements using the array index; e.g.
{ "instock.0": 1 }
projection will not project the array
with the first element.
$elemMatch
, $slice
, and
$
are the only way to project specific elements
to include in the returned array. For instance, you cannot
project specific array elements using the array index; e.g.
[ "instock.0" => 1 ]
projection will not project the array
with the first element.
$elemMatch
, $slice
, and
$
are the only way to project specific elements
to include in the returned array. For instance, you cannot
project specific array elements using the array index; e.g.
include("instock.0")
projection will not project the array
with the first element.
$elemMatch
, $slice
, and
$
are the only way to project specific elements
to include in the returned array.
For example, the following operation will not project the array with the first element:
Builders<BsonDocument>.Projection.Include("instock.0")
$elemMatch
, $slice
, and
$
are the only way to project specific elements
to include in the returned array. For instance, you cannot
project specific array elements using the array index; e.g.
{ "instock.0" => 1 }
projection will not project the array
with the first element.
$elemMatch
, $slice
, and
$
are the only way to project specific elements
to include in the returned array. For instance, you cannot
project specific array elements using the array index; e.g.
{ "instock.0" => 1 }
projection will not project the array
with the first element.
$elemMatch
, $slice
, and
$
are the only way to project specific elements
to include in the returned array. For instance, you cannot
project specific array elements using the array index; e.g.
include("instock.0")
projection will not project the array
with the first element.
See also
- Mongo Shell
[1] | You can use the DBQuery.shellBatchSize to
change the number of iteration from the default value 20 . See
Working with the mongo Shell for more information. |