Mongo查找不包含给定值的文档(使用$ not)

 hhxsv5 发布于 2023-02-07 19:42

我在MongoDB中有两个项目:

{'title':'active item',
 'tags':[
        {'tag':'active'},
        {'tag':'anothertag'}
]}
{'title':'completed item',
 'tags':[
        {'tag':'completed'}
]}

它可以找到标记为已完成的项目:

db.items.find({'tags.tag':'completed'})
RESULT: []

现在,我想选择所有未标记为已完成的项目,所以我尝试了:

db.items.find({$not:{'tags.tag':'completed'}})
DESIRED RESULT: []
ACTUAL RESULT: []

但不知何故,这并没有返回任何结果.很明显我误解了不是在Mongo,但为什么?如何查询以查找其标记中不包含给定值的记录?

1 个回答
  • $not运算符的目标需要是operator-expression,而不是field/value对象.

    所以parvin的答案是最简单的方法,但是出于学习目的,您可以$not使用$not支持的表达式来完成此操作,例如:

    db.items.find({tags: {$not: {$elemMatch: {tag: 'completed'}}}})
    
    db.items.find({'tags.tag': {$not: /completed/}})
    

    2023-02-07 19:44 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有