Je hebt gelijk dat het stuurprogramma dit ten onrechte interpreteert als de batchSize
optie en negeert de projectieverklaring.
De juiste manier om dit te doen in moderne releases van stuurprogramma's is om daadwerkelijk de .project()
. te gebruiken "cursormethode" in plaats daarvan. Dit is consistenter met implementaties van andere taalstuurprogramma's.
db.collection('collection').find()
.project({ name: 1, batchSize: 1})
.toArray();
Als volledige demonstratie:
const mongodb = require('mongodb'),
MongoClient = mongodb.MongoClient;
(async function() {
let db;
try {
db = await MongoClient.connect('mongodb://localhost/test');
// New form uses .project() as a cursor method
let result = await db.collection('collection').find()
.project({ name: 1, batchSize: 1})
.toArray();
console.log(JSON.stringify(result,undefined,2));
// Legacy form confuses this as being a legacy "cursor option"
let other = await db.collection('collection')
.find({},{ name: 1, batchSize: 1 })
.toArray();
console.log(JSON.stringify(other,undefined,2));
} catch(e) {
console.error(e)
} finally {
db.close()
}
})()
Produceert de uitvoer:
[
{
"_id": "594baf96256597ec035df23c",
"name": "Batch 1",
"batchSize": 30
},
{
"_id": "594baf96256597ec035df234",
"name": "Batch 2",
"batchSize": 50
}
]
[
{
"_id": "594baf96256597ec035df23c",
"name": "Batch 1",
"batchSize": 30,
"users": []
},
{
"_id": "594baf96256597ec035df234",
"name": "Batch 2",
"batchSize": 50,
"users": []
}
]
Waar het eerste uitvoerformulier het gecorrigeerde is, gebruikt u .project()