Node.js Firestore文档查询

Node.js Firestore文档查询,node.js,firebase,search,google-cloud-firestore,Node.js,Firebase,Search,Google Cloud Firestore,所以我在firebase firestore中使用Node JS,我想在其中包含文档的集合中创建一个查询,每个文档都有相同的布局,map(random ID)>map(userID)>{name:“hello”}, 因此,我想在整个集合中进行搜索,以找到与搜索文本具有相同名称值的所有对象,这里是数据库的图像,有什么方法可以复合此查询? 谢谢 您采用的方法的问题是,第二个随机ID是随机的,因此无法在单个查询中处理,因此我建议您为此目的更改该结构,如果您将结构更改为以下内容: Desks Colle

所以我在firebase firestore中使用Node JS,我想在其中包含文档的集合中创建一个查询,每个文档都有相同的布局,map(random ID)>map(userID)>{name:“hello”}, 因此,我想在整个集合中进行搜索,以找到与搜索文本具有相同名称值的所有对象,这里是数据库的图像,有什么方法可以复合此查询? 谢谢


您采用的方法的问题是,第二个随机ID是随机的,因此无法在单个查询中处理,因此我建议您为此目的更改该结构,如果您将结构更改为以下内容:

Desks Collection
    uid
    mapContent subCollection
        mapId
        userId
        color
        name
这基本上是一样的,只以子集合的方式组织,您可以使用以下代码查询它:

var arrayOfMaps = [];

var docRef = db.collection("Desks");

docRef.get().then(function(querySnapshot) {
    // In case you want to get only the mapContent document
    querySnapshot.forEach(function(doc) {
        arrayOfMaps.push(db.collection("Desks").doc(doc.id).collection("mapContent")
                           .where("name", "==", "Ikea").get());
    });
    // In case you want to get the whole desks document
    querySnapshot.forEach(function(doc) {
        var snapshot = db.collection("Desks").doc(doc.id).collection("mapContent")
                         .where("name", "==", "Ikea").get();
        if (!snapshot.empty){
            arrayOfMaps.push(doc);
        }
    });
})

不确定您希望我们如何处理您数据库的图像。我们不能用它来创建测试表或数据。我在问是否有一种方法可以做这个查询??谢谢老兄,你让我明白了结构应该更好的方法!