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

Firestore使用where子句查询嵌套对象内grade字段为指定值的job文档

Firestore多值匹配嵌套字段查询方案
  • 嵌套字段的引用直接使用点分隔符拼接字段路径即可,不需要额外的嵌套语法
  • 匹配多个可选值优先使用whereIn算子,效率比多个or条件拼接更高
  • whereIn最多支持10个匹配值,当前场景仅2个匹配值完全符合使用要求

1. JavaScript/Web SDK 示例

import { collection, query, where, getDocs } from "firebase/firestore";

const jobsRef = collection(db, "job"); // 替换为你的job集合实际名称
const q = query(
  jobsRef,
  where("container.grade", "in", ["New", "Near New"])
);

// 执行查询
const querySnapshot = await getDocs(q);
querySnapshot.forEach((doc) => {
  console.log(doc.id, " => ", doc.data());
});

2. Python Admin SDK 示例

import firebase_admin
from firebase_admin import firestore

db = firestore.client()
jobs_ref = db.collection('job')
docs = jobs_ref.where('container.grade', 'in', ['New', 'Near New']).stream()

for doc in docs:
    print(f'{doc.id} => {doc.to_dict()}')

3. Java SDK 示例

import com.google.cloud.firestore.Firestore;
import com.google.cloud.firestore.QuerySnapshot;
import java.util.Arrays;

Firestore db = FirestoreOptions.getDefaultInstance().getService();
QuerySnapshot querySnapshot = db.collection("job")
    .whereIn("container.grade", Arrays.asList("New", "Near New"))
    .get()
    .get();

for (var doc : querySnapshot.getDocuments()) {
    System.out.println(doc.getId() + " => " + doc.getData());
}

如果你使用的是不支持whereIn的旧版本SDK,可以用or条件组合实现等效逻辑:

// 旧版本兼容写法示例
const q = query(
  jobsRef,
  or(
    where("container.grade", "==", "New"),
    where("container.grade", "==", "Near New")
  )
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:18:01