首页 > 解决方案 > 在 Mongodb 中查找没有字符串“stag”的文档

问题描述

我正在使用 MongoDB,我的文档有一个图像名称。我的一些文档包含带有图像名称的字符串 concat,例如

没有“stag”字符串的图像文档与图像名称相连接

{
    "_id" : ObjectId("5e0be79bc6f0fc699030b472"),
    "isPublished" : 1,
    "width" : 500,
    "height" : 341,
    "shared_by" : [],
    "saved_by" : [ 
        "5e0e01fcc6f0fc112953c05c", 
        "5e10091fc6f0fc19552773be", 
        "5e133a3ec6f0fc4e6b0cd5b4"
    ],
    "img" : "1577838487.png",
    "deploy_date" : ISODate("2020-01-01T12:00:00.000Z"),
    "updated_at" : ISODate("2020-01-01T00:28:11.000Z"),
    "created_at" : ISODate("2020-01-01T00:28:11.000Z")
}

带有“stag”字符串和图像名称的图像文档

{
    "_id" : ObjectId("5e0be79bc6f0fc699030b472"),
    "isPublished" : 1,
    "width" : 500,
    "height" : 341,
    "shared_by" : [],
    "saved_by" : [ 
        "5e0e01fcc6f0fc112953c05c", 
        "5e10091fc6f0fc19552773be", 
        "5e133a3ec6f0fc4e6b0cd5b4"
    ],
    "img" : "stag/1577838487.png",
    "deploy_date" : ISODate("2020-01-01T12:00:00.000Z"),
    "updated_at" : ISODate("2020-01-01T00:28:11.000Z"),
    "created_at" : ISODate("2020-01-01T00:28:11.000Z")
}

我想获取所有 img 字段不包含“stag”字符串的文档。

如何在没有聚合的情况下在 MongoDB 中执行此操作?

标签: mongodbaggregation-framework

解决方案


您可以使用$indexOfBytes-1运算符,如果字符串中不包含短语,则返回:

db.collection.find({ $expr: { $eq: [ { $indexOfBytes: [ "$img", "stag" ] }, -1 ] } })

蒙戈游乐场


推荐阅读