我正在做一些关于云火场的研究。目前,我正在调查云火药库中的查询。我对如何进行查询有了基本的了解,比如在下面给出的数据库截图中:

第二(一些哑巴屎)和第三(一些好屎)项目属于领域“硬件”.因此,如果我想搜索一个项目与其领域有关……我会做这样的事:
databaseReference.collection("Projects").where("Field",isEqualTo: "Hardware")但是,如果我想根据成员的名字搜索项目(请参考上面的截图).我需要在“成员”字段中搜索一个名为"Sarvesh Dalvi“的项目)。在这种情况下我应该如何写一个查询。
注:
名称("Sarvesh Dalvi")存在于这个继承制度中:DocumentID(例如:“一些愚蠢的屎”)/数组(“成员”)/地图({名称:__,MemberRef :__});
提前谢谢你的帮助。
更新:
通过这样的操作,我学会了如何访问数组:
Future<dynamic> getUserProjectFromDatabase(String username)
{
return databaseReference.collection("Projects").where("Members",arrayContains: {"Name" : username}).getDocuments().then((value){
print(value.documents.length);
value.documents.forEach((element) {print(element.data);});
});
}但是,如果地图只包含:
{"Name" : username};但在我的例子中我的地图是这样的:
{
"Name" : username,
"MemberRef" : /*Reference to a Document*/
};请参阅上面发布的截图。
我只想查询地图中的名字,而不是MemberRef.那么,我怎样才能查询这样的内容:
Future<dynamic> getUserProjectFromDatabase(String username)
{
return databaseReference.collection("Projects").where("Members",arrayContains: {"Name" : username,"MemberRef" : /* can be anything */}).getDocuments().then((value){
print(value.documents.length);
value.documents.forEach((element) {print(element.data);});
});
}发布于 2020-07-10 13:56:58
无法仅查询当前数据结构中的成员名称。
你有两个主要选择:
MemberRef,则可以 query with array-contains:where('Members', arrayContains: {'Name':'New User','MemberRef':'value of memberref'})。这是因为array-contains可以检查数组是否包含指定的完整值.。
如果您不知道子字段,则需要更改数据模型以允许查询。我通常建议创建一个只具有成员名称的附加字段:MemberNames: ["New User", "Sarvesh Dalvi"]。然后您可以使用相同的array-contains运算符,但现在在这个新字段上使用简单的类型:array-contains
https://stackoverflow.com/questions/62834339
复制相似问题