dapeng919 2017-06-13 02:48 采纳率: 100%
浏览 1091
已采纳

mongo 怎么实现查询一个数组

给出一个数组,里面装了10个对象id,怎么才能一次查出这个数组里的10对象,代码怎么实现这个功能?求大神讲解,谢谢

  • 写回答

1条回答 默认 最新

  • John_like521 2017-06-14 03:38
    关注

    查询数组。此时你可能会使用到$all、$size。

    db.tianyc04.find()
    { "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
    { "_id" : 2, "fruit" : [ "apple", "orange", "peach" ] }
    { "_id" : 3, "fruit" : [ "orange", "banana", "peach" ] }

    #通过全匹配,查询第一行

    db.tianyc04.find({fruit:["apple", "banana", "peach"]})
    { "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }

    #如果将数组中的顺序颠倒,则第一行就匹配不上了。此时可以使用$all

    db.tianyc04.find({fruit:["apple", "peach", "banana"]})

    db.tianyc04.find({fruit:{$all:["apple", "peach", "banana"]}})
    { "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }

    #也可以只输入一个元素进行查询

    db.tianyc04.find({fruit:'apple'})

    { "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
    { "_id" : 2, "fruit" : [ "apple", "orange", "peach" ] }

    #如果这个元素变成了数组,mongo就会进行精确匹配。此时你可能需要使用$all进行模糊匹配:

    db.tianyc04.find({fruit:['apple']})

    db.tianyc04.find({fruit:{$all:['apple']}})
    { "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
    { "_id" : 2, "fruit" : [ "apple", "orange", "peach" ] }

    #还可以按照数组中指定位置的元素进行查询,注意数组下标的起始编号是0。

    db.tianyc04.find()
    { "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
    { "_id" : 2, "fruit" : [ "apple", "orange", "peach" ] }
    { "_id" : 3, "fruit" : [ "orange", "banana", "peach" ] }
    db.tianyc04.find({'fruit.1':'orange'})
    { "_id" : 2, "fruit" : [ "apple", "orange", "peach" ] }

    #可以按照数组长度进行查询,只查询数组长度为x的文档。

    db.tianyc04.find()
    { "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
    { "_id" : 2, "fruit" : [ "apple", "orange", "peach" ] }
    { "_id" : 3, "fruit" : [ "orange", "banana", "peach" ] }
    { "_id" : 4, "fruit" : [ "apple" ] }
    db.tianyc04.find({fruit:{$size:3}})
    { "_id" : 1, "fruit" : [ "apple", "banana", "peach" ] }
    { "_id" : 2, "fruit" : [ "apple", "orange", "peach" ] }
    { "_id" : 3, "fruit" : [ "orange", "banana", "peach" ] }
    db.tianyc04.find({fruit:{$size:1}})
    { "_id" : 4, "fruit" : [ "apple" ] }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 相信营销号手欠改了处理器设置
  • ¥15 时间序列LSTM模型归回预测代码问题
  • ¥50 使用CUDA如何高效的做并行化处理,是否可以多个分段同时进行匹配计算处理?目前数据传输速度有些慢,如何提高速度,使用gdrcopy是否可行?请给出具体意见。
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),如何通过环岛的原理及完整代码
  • ¥20 机器学习或深度学习问题?困扰了我一个世纪,晚来天欲雪,能饮一杯无?
  • ¥15 c语言数据结构高铁订票系统
  • ¥15 关于wkernell.PDB加载的问题,如何解决?(语言-c#|开发工具-vscode)
  • ¥15 (标签-STM32|关键词-智能小车)
  • ¥20 关于#stm32#的问题,请各位专家解答!
  • ¥15 (标签-python)