projection not working with find query

2019-01-29 04:37发布

问题:

Hello I'd like to exclude some fields by query,. Im using nodejs

public async getDoc() {
        return new Promise((resolve, reject) => {
            this.database.collection('users').find({email: "value3"}, {password: 0}).toArray((err, result) => {
                if(err) {
                    reject(err)
                }
                resolve(result);
            });
        })
    }

but in the result set I keep getting password field..

回答1:

Projection doesn't work with the new nodejs mongodb driver... Instead you will have to use .project() cursor method here

this.database.collection('users')
  .find({ "email": "value3" })
  .project({ "password": 0 })
  .toArray();


回答2:

Use fields object as 2nd parameter in find method with all fields in that object which you want to get exluding password.

Do it like this:

find({email: "value3"}, {fields: {all_other_fields...: 1}})

You can also try {fields: {password: 0}} as well but I haven't tried it myself that's why I'm not sure that it'll work.