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



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

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

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

mongoengine python mongodb

fucking 9 years, 6 months ago

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

Geburah answered 9 years, 6 months ago


 Post.objects(tags__ne='php')

zjhlsx answered 9 years, 6 months ago

其实就用 $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",
    },
})

红莲的心绪 answered 9 years, 6 months ago

Your Answer