mongoengine在嵌套字段中获得价值

时间:2018-11-14 08:15:13

标签: python mongodb mongoengine

我在mongodb中有以下列表。

> db.article.find().pretty()
{
    "_id" : ObjectId("5bebcfbb1b48d9974aac78ee"),
    "no" : 40,
    "subject" : "string",
    "content" : "string",
    "userid" : "string",
    "comments" : [
        {
            "no" : 1,
            "content" : "First content",
            "userid" : "john",
            "parent" : null,
            "seq" : 12,
            "created_at" : ISODate("2018-11-14T16:33:01.943Z")
        },
        {
            "no" : 2,
            "content" : "Second",
            "userid" : "doe",
            "parent" : null,
            "seq" : 25,
            "created_at" : ISODate("2018-11-14T16:33:01.943Z")
        },
}

现在我在python应用程序中使用mongoengine

如果我想获取注释的编号:2的seq字段值(在此代码中为25),如何处理查询?

我找到了与之相关的文档(http://docs.mongoengine.org/guide/querying.html),但我不知道它与我想要的完全相同。

这里有解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

db.getCollection('article').aggregate([
{"$project":{"comments.seq":1,"comments.no":1,"_id":0}},
{"$unwind":"$comments"},
{"$match":{"comments.no":NumberInt(2)}},
{"$project":{"comments.seq":1}}
])

enter image description here

您可以参考它。