Saya mencoba untuk memilih hanya bidang tertentu dengan
exports.someValue = function(req, res, next) {
//query with mongoose
var query = dbSchemas.SomeValue.find({}).select('name');
query.exec(function (err, someValue) {
if (err) return next(err);
res.send(someValue);
});
};
Tetapi dalam tanggapan json saya, saya juga menerima _id, skema dokumen saya hanya memiliki dua fiels, _id dan nama
[{"_id":70672,"name":"SOME VALUE 1"},{"_id":71327,"name":"SOME VALUE 2"}]
Mengapa???
javascript
node.js
mongodb
mongoose
TlonXP
sumber
sumber
.select
hanya filter untuk memilih bidang setelah Anda mendapatkan semua itu, rekomendasi saya adalah menggunakan.find({}, 'name -_id')
.find({}, 'name -_id')
sepertinya tidak berfungsi?Ada cara yang lebih singkat untuk melakukan ini sekarang:
Jika Anda ingin sebagian besar
Schema fields
dan ingin menghilangkan hanya sedikit, Anda dapat mengawali bidangname
dengan-
. Untuk mantan"-name"
dalam argumen kedua akan tidak menyertakanname
lapangan di doc sedangkan contoh yang diberikan di sini akan memiliki hanya satuname
lapangan di docs kembali.sumber
blogItemModel.find({}, 'title intro_image intro_text publish_date', function(err, blog_items){..
Ada cara yang lebih baik untuk menanganinya menggunakan kode Native MongoDB di Mongoose.
http://docs.mongodb.org/manual/reference/method/db.collection.find/
catatan:
Daftar objek yang terdaftar di sini tidak akan dikembalikan / dicetak.
sumber
Data DB
Pertanyaan
Keluaran:
Bekerja bermain sampel
tautan
sumber
Mengecualikan
Kode di bawah ini akan mengambil semua bidang selain kata sandi dalam setiap dokumen:
Keluaran
Sertakan
Kode di bawah ini hanya akan mengambil bidang email dalam setiap dokumen:
Keluaran
sumber
Cara yang tepat untuk melakukannya adalah dengan menggunakan
.project()
metode kursor dengan newmongodb
dannodejs
driver.sumber
.project()
bekerja hanya dengan agregat. Jika Anda ingin menggunakannya dengan find gunakan argumen kedua dalamfind({},{ name: 1, _id: 0 })
metode.Sebagai contoh,
0 berarti abaikan
1 cara menunjukkan
sumber