我正在使用PyMongo从MongoDB获取数据。集合中的所有文档都类似于以下结构:
{
"_id" : ObjectId("50755d055a953d6e7b1699b6"),
"actor":
{
"languages": ["nl"]
},
"language":
{
"value": "nl"
}
}
我正在尝试获取属性language.value
内属性actor.languages
的所有会话。
目前,我知道如何在actor.languages
内查找具有常量值的所有会话(例如actor.languages
内与 en 的所有会话。)
但我仍然坚持如何在当前文档中对变量值(language.value
)进行相同的比较。
欢迎任何帮助,提前谢谢!
答案 0 :(得分:1)
db.testcoll.find({$where:"this.actor.languages.indexOf(this.language.value) >= 0"})
答案 1 :(得分:1)
如果你的查询集很小,你可以使用$where
,但任何实际大小都可以开始看到问题,特别是因为这个查询看起来像需要在页面和JS上实时运行的查询引擎是单线程的其他问题。
我实际上认为在这种情况下更好的方法是通过客户端,它非常直接,根据其中一个值拉出记录,迭代并测试它们的条件双值(即基于{{拉出) 1}}为nl并测试前一个值的language.value
。)
我想你可以用聚合框架做到这一点,但是,在最小的时候你不能在actor.languages
中使用计算字段。我想它会是这样的:
$match
如果可以的话。但可能有办法。