javascript - 如何通过空值在mongodb中找到记录
问题描述
集合中有这样的文档:
{name:'abc', age:'22',job:'writer', place: 'place1',tag:['a','v']},
{name:'def', age:'24',job:'no job', place: 'place1',tag:['a','f']},
{name:'ghi', age:'22',job:'writer', place: 'place3',tag:['d','v']},
{name:'jklm', age:'22',job:'editor', place: 'place4',tag:['a','d']},
我需要按以下条件搜索(用户输入详细信息)
searchKey{
sk_age:'22',
sk_job:['writer','editor']
sk_place:null,
sk_tag:null
}
“未输入位置和标记用户”
我正在编写如下所示的 mongodb 查询,但这不起作用,如何正确找到
db.user.find( {
age:sk_age,
job:sk_job,
place:sk_place,
tag:sk_tag,
} ).toArray()
我期待 || 我需要下面列出的录音机
{name:'abc', age:'22',job:'writer', place: 'place1',tag:['a','v']},
{name:'ghi', age:'22',job:'writer', place: 'place3',tag:['d','v']},
{name:'jklm', age:'22',job:'editor', place: 'place4',tag:['a','d']},
解决方案
您可以使用$in
运算符并检查字段是否不为空,例如
const query = {
age:sk_age,
job: {'$in': sk_job}
}
if (sk_place !== null) {
query.place = sk_place;
}
if (sk_tag !== null) {
query.tag = sk_tag;
}
db.user.find(query).toArray()
推荐阅读
- r - 无法在 Macbook 上加载 tidycensus 和地图视图包
- amazon-web-services - 是否可以使用带有 S3 触发器的 lambda 函数将数据从 S3 发送到 Raspberry pi
- python-3.x - 在 Windows 10 pycharm 中构建的 pyinstaller 问题
- css - 使用 ::ng-deep 选择器时如何通过 Id 为元素应用样式
- python - 基于第二个值的元组排序列表的时间复杂度
- android - 如何在新版本的 android 上运行旧版本的 android 应用程序?
- spring - 用于授权代码的 Jhipster OIDC 配置
- python - 找不到函数的定义 - VSCode Python
- laravel - 我应该如何限制父模型在laravel中可以拥有的孩子数量
- python - 我不知道为什么我不断收到 AttributeError: 'tuple' object has no attribute 'size'