आप सही हैं कि ड्राइवर गलत तरीके से इसकी व्याख्या करता है batchSize
विकल्प और प्रोजेक्शन स्टेटमेंट पर ध्यान नहीं देता।
ऐसा करने का सही तरीका हालांकि आधुनिक ड्राइवर रिलीज़ में वास्तव में .project()
. का उपयोग करना है इसके बजाय "कर्सर विधि"। यह अन्य भाषा चालक कार्यान्वयनों के साथ अधिक संगत है।
db.collection('collection').find()
.project({ name: 1, batchSize: 1})
.toArray();
एक पूर्ण प्रदर्शन के रूप में:
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()
}
})()
उत्पादन करता है:
[
{
"_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": []
}
]
जहां पहला आउटपुट फॉर्म सही किया गया है, .project()
. का उपयोग करके