MongoDB Yii2 中的字符串字段值长度

MongoDB string field value length in Yii2

我刚刚阅读 并在 MongoDB 控制台中直接使用时成功地获得了一个查询。我使用的查询是:

db.getCollection('language').find({
  name: {$ne: ''}, 
  $where: "this.i18n.length < 3"
})

我现在正尝试在 Yii2 中复制相同的内容:

$languages = Language::find()
  ->where(['$ne', 'name', ''])
  ->andWhere(['<', 'this.i18n.length', '3'])
  ->all();

但是数组是空的。

我试过没有字符串长度的查询:

$languages = Language::find()
  ->where(['$ne', 'name', ''])
  ->all();

并且数组被填充。

我也试过单独使用字符串长度的查询:

$languages1 = Language::find()
  ->where(['<', 'this.i18n.length', '3'])
  ->all();
$languages2 = Language::find()
  ->where(['<', 'i18n.length', '3'])
  ->all();

但数组仍然是空的。

问题是:如何让 $where: "this.i18n.length < 3" 在 Yii2 中工作?

现在无法测试,但可以尝试这样的操作:

$languages = Language::find()
  ->where(['$ne', 'name', ''])
  ->andWhere(['=', '$where','this.i18n.length<3'])
  ->all();

我想没有办法直接查询数据库。我在 php:

中过滤了结果
$languages = Language::find()->where(['$ne', 'name', ''])->all();
foreach ($languages as $fac) {
  if(strlen($fac->i18n)<3){
    // my code here
  }
}

谢谢。