Bạn đúng là trình điều khiển diễn giải sai điều này là batchSize
và bỏ qua câu lệnh chiếu.
Cách chính xác để làm điều này mặc dù trong các bản phát hành trình điều khiển hiện đại là thực sự sử dụng .project()
"phương thức con trỏ" thay thế. Điều này phù hợp hơn với các triển khai trình điều khiển ngôn ngữ khác.
db.collection('collection').find()
.project({ name: 1, batchSize: 1})
.toArray();
Như một minh chứng đầy đủ:
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()
}
})()
Tạo ra đầu ra:
[
{
"_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": []
}
]
Trong đó biểu mẫu đầu ra đầu tiên là biểu mẫu đã sửa, sử dụng .project()