【问题标题】:MongoDb query on array elementMongoDb 查询数组元素
【发布时间】:2018-09-27 11:14:44
【问题描述】:

假设我有一个文档

[
    { fruits: ["apple", "orange", "banana", "watermelon", "grapes"] },
    { fruits: ["watermelon", "banana"] },
    { fruits: ["pineapples", "apple", "orange", "banana"] },
    { fruits: ["apple", "orange"] },
    { fruits: ["banana"] },
    { fruits: ["apple", "orange", "banana"] }
]

现在我想找到一个文档,其中应该有 appleorange 以及其他水果作为可选。我的意思是 如果我搜索 为"apple","orange","banana" 在那个 如果它应该给我文件,其中必须有 appleorangebanana 作为可选

例如,它应该给我结果

[ 
    {  fruits: ["apple", "orange", "banana"] },
    { fruits: ["apple", "orange"] },
]

正如您在上面看到的,它应该只给我包含 appleorangebanana 作为可选的文档

【问题讨论】:

  • 您的文件无效。请确保您正确构建它
  • 对不起,我的结构不正确,它是硬编码的,只是为了解释而不是我数据库中的实际文档
  • 你可以试试db.getCollection('fruite').find({fruits: { $in: ["apple",'orange'] } })
  • 你需要这个{ fruits: ["apple", "orange", "banana", "watermelon", "grapes"] }, 输出吗?
  • @IftekharDani 这将返回所有包含苹果和橙色的文档。我不想要这个。我想要必须有苹果和橙子的文件,它可能有也可能没有香蕉。而不是文档中的其他水果

标签: mongodb


【解决方案1】:

更新:
不确定这是我将在生产代码中使用的确切查询,但它可以工作:

db.getCollection('yourCollection').find({ $or : [
    {"fruits": ["apple","orange"]},
    {"fruits": ["apple","orange","banana"]}
]})

【讨论】:

  • 这不会给我想要的结果。请查看我的问题,我已经提到了我想要的结果
  • 查看新查询
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 2018-04-04
相关资源
最近更新 更多