【问题标题】:How to query multi value in mogoDB如何在mongoDB中查询多值
【发布时间】:2020-11-20 09:14:46
【问题描述】:
  • 我是使用 mogoDB (json/noSQL) 的初学者。请帮助我在 mogoDB 中使用查询。在 SQL 中,我使用如下:
select * from account where 'status'='active' and 
('create_by'= 'USE001' or 'create_by' = 'USE004' or 'create_by' = 'USE035')". 
  • 在 mogoDB (json/noSQL) 中,我该怎么做??
  • 这是我的数据结构:
{
   "id":"ACC0001",
   "create_day":"2020-04-20 16:56:11",
   "create_by":"USE001",
   "brief_name":"AAAAA",
   "status":"active"
},
{
   "id":"ACC0002",
   "create_day":"2020-04-20 16:56:12",
   "create_by":"USE002",
   "brief_name":"BBBBB",
   "status":"inactive"
},
{
   "id":"ACC0003",
   "create_day":"2020-04-20 16:56:13",
   "create_by":"USE003",
   "brief_name":"CCCCC",
   "status":"active"
},
{
   "id":"ACC0004",
   "create_day":"2020-04-20 16:56:14",
   "create_by":"USE004",
   "brief_name":"DDDDD",
   "status":"inactive"
},
{
   "id":"ACC9999",
   "create_day":"2020-04-20 16:56:15",
   "create_by":"USE100",
   "brief_name":"FFFFF",
   "status":"active"
}

【问题讨论】:

  • 你确定root.account是一个对象吗?
  • 这是您的真实数据吗?这是 一个 文档,即就 SQL 而言,这是一个单行。您想只获取该文档的部分数据吗?
  • 谢谢@varman; @Wernfried Domscheit。我更新了我的数据结构。因为我是新手,所以在结构或查询方面我对noSQL的经验并不多。感谢 cmets
  • 其实不要上传图片文件,你之前发的都是对的,这是错误的。你需要发布一个对象的整个结构。请编辑并上传整个样本数据结构
  • 你有root 对象。它有一个名为account 的属性。我需要知道account 是一个objext 还是一个数组?

标签: json mongodb mongodb-query nosql


【解决方案1】:

我们可以将您的查询翻译成以下内容,请注意我使用了$in 运算符。

db.account.find({
  status: "active",
  create_by: { $in: [ "USE001", "USE004", "USE035" ] }
})

从技术上讲,您也可以将其作为以下查询运行,但是,如果您在同一字段上进行相等检查,mongo 建议使用 $in 而不是 $or。我之所以提到这一点,是因为您在原始 MySQL 查询中没有使用IN。见:https://docs.mongodb.com/manual/reference/operator/query/or/#or-versus-in

db.account.find({
  status: "active",
  $or: [
    { create_by: "USE001" },
    { create_by: "USE004" },
    { create_by: "USE035" }
  ]
})

【讨论】:

  • 非常感谢你。感谢您分享的知识对我很有帮助!!!!
猜你喜欢
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
相关资源
最近更新 更多