0

我正在使用PyMongoMongoDB获取数据。集合中的所有文档的结构如下所示:

{
    "_id" : ObjectId("50755d055a953d6e7b1699b6"), 
    "actor":
    {
        "languages": ["nl"]
    },
    "language":
    {
        "value": "nl"
    }
}

我正在尝试获取该属性在该属性language.value内的所有对话actor.languages

目前,我知道如何查找内部具有恒定值的 actor.languages所有对话(例如,所有带有en inside的对话actor.languages)。

但我一直坚持如何与language.value当前文档中的变量值 ( ) 进行相同的比较。

欢迎任何帮助,在此先感谢!

4

2 回答 2

1

如果您的查询集很小,您可以使用$where任何实际大小,并且您可能会开始看到问题,特别是因为此查询似乎需要在页面上实时运行,并且 JS 引擎是单线程的以及其他问题。

在这种情况下,我实际上会考虑一种更好的方法是通过客户端,它非常简单,根据其中一个值提取记录,迭代并测试它们的条件双精度值(即基于language.valuenl 和测试actor.languages值提取对于之前的值)。

我想您可能可以使用聚合框架来做到这一点,但是,您至少不能在$match. 我想它会是这样的:

{$project: 
     {languages_value: "$language.value", languages: "$actor.languages"}
}, {$match: {"$languages": {$in:"$languages_values"}}

如果你可以。但可能有办法。

于 2012-11-28T12:42:45.963 回答
1
db.testcoll.find({$where:"this.actor.languages.indexOf(this.language.value) >= 0"})
于 2012-11-28T09:08:42.813 回答