mongodb - Yii2中的MongoDB字符串字段值长度
问题描述
我刚刚阅读了如何在 MongoDB 中查询字符串字段值长度,并在直接在 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 中工作?
解决方案
我想没有办法直接查询数据库。相反,我在 php 中过滤了结果:
$languages = Language::find()->where(['$ne', 'name', ''])->all();
foreach ($languages as $fac) {
if(strlen($fac->i18n)<3){
// my code here
}
}
谢谢。
推荐阅读
- python - python模块的终端和bash脚本之间的奇怪行为差异
- python - 向量化从具有索引列表的多维数组中提取子多维数组
- python - 我无法使用 heroku 运行 !giveaway 命令,但是当我使用 cmd 时,一切正常吗?
- c++ - 使用 Visual Studio 构建 x64 DLL
- java - 在 Java 中使用 switch 语句无法访问代码
- ios - 地图上的自定义注释
- javascript - 有效地检查对象数组循环中的许多条件
- javascript - 在另一个双引号中转义双引号中的单引号
- javascript - 嗨,我为 addCourse 创建了一个减速器,它给了我一个错误“TypeError:pathString.replace 不是函数”
- flutter - 基本的颤振蓝牙问题