Home  >  Q&A  >  body text

python - Mongoengine 怎样查询 ListField 里 不包含某个 value 所有结果

class Post(Document)
    tags = ListField(StringField())

tags 可以是 ["php", "python", "perl"],还可以是 ["ruby", "java"] 之类的

假设,我要列出 tags 里所有不包含 php 的 post,应该怎么写查询?

ringa_leeringa_lee2764 days ago406

reply all(3)I'll reply

  • 伊谢尔伦

    伊谢尔伦2017-04-17 13:47:15

    In fact, just use $ne.

    from pymongo import MongoClient
    
    client = MongoClient("mongodb://127.0.0.1")
    db = client["your-db"]
    collection = db["your-collection"]
    iter = collection.find({
        "tags": {
            "$ne": "php",
        },
    })
    

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-17 13:47:15

    Post.objects(tags__ne='php')
    

    reply
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 13:47:15

    用 $nin

    Consider the following query:

    db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )

    If the field holds an array, then the $nin operator selects the documents whose field holds an array with no element equal to a value in the specified array (e.g. , , etc.).

    reply
    0
  • Cancelreply