You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB查询特定条件文档:给定文档结构下的查询需求

MongoDB文档查询指南(针对你的商品文档结构)

没问题!我来给你一步步拆解如何针对你提供的这款商品MongoDB文档,查询满足各种特定条件的文档。先回顾下你的文档结构方便参考:

{
"id" : ObjectId("598c00090ec35f5dd3dc508a"),
"type" : "Wear",
"kind" : "Shoes",
"brand" : "Free People",
"article" : "6718_brown",
"grander" : "m",
"size" : { "39" : 1, "44" : 0, "45" : 6 },
"rsp" : 3400,
"price" : 873,
"createdAt" : ISODate("2017-08-10T06:41:13.294Z"),
"images" : [ "6718_bezhevye
!_1.jpg", ... ],
"__v" : 0
}


1. 基础等值查询

最常用的就是匹配某个字段的具体值,比如:

  • 查询所有类型为Wear的商品:
db.yourCollectionName.find({ type: "Wear" })

(记得把yourCollectionName换成你实际的集合名)

  • 查询品牌是Free People的鞋子:
db.yourCollectionName.find({ brand: "Free People", kind: "Shoes" })

2. 嵌套字段(size对象)查询

因为size是嵌套对象,查询时要用点符号指定具体的子字段:

  • 查询39码有库存(数量>0)的商品:
db.yourCollectionName.find({ "size.39": { $gt: 0 } })

这里$gt是MongoDB的比较运算符,表示“大于”。

  • 查询45码库存等于6的商品:
db.yourCollectionName.find({ "size.45": 6 })

3. 数值范围查询

针对price、rsp这类数值字段,用比较运算符做范围筛选:

  • 查询售价在500到1000之间的商品:
db.yourCollectionName.find({ price: { $gte: 500, $lte: 1000 } })

$gte表示“大于等于”,$lte表示“小于等于”。

  • 查询建议零售价(rsp)大于2000的商品:
db.yourCollectionName.find({ rsp: { $gt: 2000 } })

4. 数组字段(images)查询

针对images数组,有几种常见的查询方式:

  • 查询包含指定图片的商品:
db.yourCollectionName.find({ images: "6718_bezhevye_!_1.jpg" })

MongoDB默认会匹配数组中包含该值的文档。

  • 查询图片数量大于3的商品:
db.yourCollectionName.find({ $expr: { $gt: [ { $size: "$images" }, 3 ] } })

(注:$size不支持直接用范围运算符,所以需要结合$expr来实现)


5. 日期范围查询

针对createdAt日期字段,筛选特定时间段的文档:

  • 查询2017年8月1日之后创建的商品:
db.yourCollectionName.find({ createdAt: { $gte: ISODate("2017-08-01T00:00:00Z") } })
  • 查询2017年8月10日当天创建的商品:
db.yourCollectionName.find({
  createdAt: {
    $gte: ISODate("2017-08-10T00:00:00Z"),
    $lt: ISODate("2017-08-11T00:00:00Z")
  }
})

6. 多条件组合查询

用$and、$or来组合多个条件:

  • 查询品牌是Free People,且售价低于1000,且39码有库存的商品:
db.yourCollectionName.find({
  brand: "Free People",
  price: { $lt: 1000 },
  "size.39": { $gt: 0 }
})

(多个条件直接写在对象里默认就是$and逻辑)

  • 查询要么是Shoes类型,要么售价低于500的商品:
db.yourCollectionName.find({
  $or: [
    { kind: "Shoes" },
    { price: { $lt: 500 } }
  ]
})

如果还有更特殊的查询需求,随时告诉我具体条件,我再帮你调整语法~

内容的提问来源于stack exchange,提问作者Juff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:54:18