如果其他字段为假或不存在,则为猫鼬唯一复合索引

时间:2019-06-12 16:50:31

标签: mongodb mongoose

如果每个项目的国家/地区未将其标记为无效,则每个国家/地区的名称都必须是唯一的,因此,如果根本没有设置无效或无效,我想设置某种复合索引来强制使用标志设置为false。可以使用索引完成此操作,还是必须编写一个预保存钩子?

let itemSchema = new Schema({
    name: String,
    country: String,
    inactive: Boolean
})

itemSchema.index(
    {
        name: 1,
        country: 1
    },
    {
        // How do I set it to unique if inactive is false or does not exist?
        unique: true
    }
)

1 个答案:

答案 0 :(得分:0)

我有一个非常相似的问题,并在this answer的帮助下解决了。

 generatePDF(dynamic value) async {
    final filename = value.substring(value.lastIndexOf("/") + 1);
    var request = await HttpClient().getUrl(Uri.parse(value));
    var response = await request.close();
    var bytes = await consolidateHttpClientResponseBytes(response);
    String dir = (await getApplicationDocumentsDirectory()).path;
    File file = new File('$dir/$filename');
    await file.writeAsBytes(bytes);
    OpenFile.open(file.path);
  }

我还没有使用itemSchema.index( { name: 1, country: 1 }, { unique: true, partialFilterExpression: { inactive: { $eq: false } } } ) 进行尝试,但是大概可以修改$exists使其包含以下内容:

partialFilterExpression