admin管理员组

文章数量:1420966

I have a mongoose Schema that looks like this:

var mySchema = new mongoose.Schema({
  ...
  metadata: {
    isDeleted: {
      type: Boolean,
      default: false
    },
    ...
  }
});

I want to get the list of elements in my mongodb database applying a filter, so I have the following object:

var searchOptions = { metadata: { isDeleted: false } };

that always needs to have that metadata.isDeleted value set to false, appart from other parameters that will be added later, before executing the query:

var objQuery = myModel.find(searchOptions, '-metadata');

At first, I had isDeleted attribute outside my metadata object in the Schema, and

var searchOptions = { isDeleted: false };

used to work perfectly. But it is since I decided to have isDeleted inside my metadata object that is not working and can't figure out why...

I have a mongoose Schema that looks like this:

var mySchema = new mongoose.Schema({
  ...
  metadata: {
    isDeleted: {
      type: Boolean,
      default: false
    },
    ...
  }
});

I want to get the list of elements in my mongodb database applying a filter, so I have the following object:

var searchOptions = { metadata: { isDeleted: false } };

that always needs to have that metadata.isDeleted value set to false, appart from other parameters that will be added later, before executing the query:

var objQuery = myModel.find(searchOptions, '-metadata');

At first, I had isDeleted attribute outside my metadata object in the Schema, and

var searchOptions = { isDeleted: false };

used to work perfectly. But it is since I decided to have isDeleted inside my metadata object that is not working and can't figure out why...

Share Improve this question edited Mar 29, 2018 at 12:57 Azzabi Haythem 2,4237 gold badges31 silver badges32 bronze badges asked Sep 23, 2015 at 10:31 charliebrowniecharliebrownie 6,16711 gold badges39 silver badges56 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 7

It seems pretty likely given your use of elipsis in your schema listing that there are more properties than isDeleted under the metadata property. So your object should be:

var searchOptions = { "metadata.isDeleted": false } };

The reason for this is that otherwise the query is looking for a document with "exactly" and "only" the properties named under the metadata key:

var searchOptions = { metadata: { isDeleted: false } };

And when that is not the case, then of course there is no match.

本文标签: javascriptMongoosefind() object inside search options is not workingStack Overflow