Mongoose - find(): object inside search options is not working

耗尽温柔 提交于 2021-02-05 07:52:06

问题


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...


回答1:


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.



来源:https://stackoverflow.com/questions/32737223/mongoose-find-object-inside-search-options-is-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!