MongoDB增删改查语句实例

参考文档:https://docs.whaleal.com/mongodb-manual-zh/

db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )

例如,以下查询选择字段大小等于文档{h14w21uom“ cm”}的所有文档:

db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )
 

以下示例选择嵌套在size字段中的uom字段等于“ in”的所有文档

db.inventory.find( { "size.uom": "in" } )

查询数组:

db.inventory.insertMany([
    { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] }, 
    { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
    { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
    { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },  
    { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);

下面的示例查询所有文档,其中字段标签值是按指定顺序恰好具有两个元素"red" "blank"的数组:

db.inventory.find( { tags: ["red", "blank"] } )

相反,如果您希望找到一个同时包含元素“ red”“ blank”的数组,而不考虑顺序或该数组中的其他元素,请使用$all运算符:

db.inventory.find( { tags: { $all: ["red", "blank"] } } )

只要tags中包含red就可以

db.inventory.find( { tags: "red" } )

例如,以下操作查询数组dim_cm包含至少一个值大于25的元素的所有文档。

db.inventory.find( { dim_cm: { $gt: 25 } } )
db.inventory.find( { dim_cm: { $gt: 15, $lt: 20 } } )

使用$elemMatch运算符可在数组的元素上指定多个条件,以使至少一个数组元素满足所有指定的条件。

以下示例查询在dim_cm数组中包含至少一个同时大于($gt)22和小于 ($lt30的元素的文档:

db.inventory.find( { dim_cm: { $elemMatch: { $gt: 22, $lt: 30 } } } )

以下示例查询数组dim_cm中第二个元素大于25的所有文档:

db.inventory.find( { "dim_cm.1": { $gt: 25 } } )

使用$size运算符可按元素数量查询数组。 例如,以下选择数组tags具有3个元素的文档.

db.inventory.find( { "tags": { $size: 3 } } )

db.inventory.insertMany( [
    { item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },  
    { item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
    { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },
    { item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] }, 
    { item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);

下面的示例选择库存数组中的元素与指定文档匹配的所有文档。顺序也要匹配:

db.inventory.find( { "instock": { warehouse: "A", qty: 5 } } )

下面的例子选择了所有instock数组的第一个元素是一个包含值小于或等于20的字段qty的文档:

db.inventory.find( { 'instock.0.qty': { $lte: 20 } } )
 

下面的示例查询instock数组中至少有一个嵌入式文档的文档,这些文档包含数量等于5的字段:

db.inventory.find( { "instock": { $elemMatch: { qty: 5} } } )
 

以下示例查询instock数组中至少一个包含数量等于5的嵌入式文档和至少一个包含等于A的字段仓库的嵌入式文档(但不一定是同一嵌入式文档)的文档(满足任一条件):

db.inventory.find( { "instock.qty": 5, "instock.warehouse": "A" } )

查询空字段:

查询不存在的字段:{item:{$exists:false}}

查询值为null的字段:{item:{$type:10}}   BSON中10是null的类型编号

同时查询:{item:null}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值