Mongodb DataStax Stargate文档API

Mongodb DataStax Stargate文档API,mongodb,cassandra,datastax,Mongodb,Cassandra,Datastax,在DataStax文档API Swigger UI中显示的Swigger文档中,一个带有搜索过滤器的JSON blob,允许的运算符:$eq、$ne、$in、$nin、$gt、$lt、$gte、$lte、$lte、$code>存在什么,它没有文档化,所以我想问一下查询字符串是否基于MongoDB?在Cassandra之上公开的文档API是由开源项目提供的,实际上是由Datastax开发的,并嵌入到他们的Saas解决方案中 您创建的JSON查询字符串将在适当的CQL查询中进行解析和转换 源代码不说

在DataStax文档API Swigger UI中显示的Swigger文档中,
一个带有搜索过滤器的JSON blob,允许的运算符:$eq、$ne、$in、$nin、$gt、$lt、$gte、$lte、$lte、$code>存在什么,它没有文档化,所以我想问一下查询字符串是否基于MongoDB?

在Cassandra之上公开的文档API是由开源项目提供的,实际上是由Datastax开发的,并嵌入到他们的Saas解决方案中

您创建的JSON查询字符串将在适当的CQL查询中进行解析和转换

源代码不说谎您可以找到完整的代码,特别是where子句的解析

公共列表转换为过滤器(
列出预设路径,
JsonNode过滤器(JSON){
列表条件=新建ArrayList();
如果(!filterJson.isObject()){
抛出新的DocumentPiRequestException(“搜索需要一个JSON对象作为输入。”);
}
ObjectNode输入=(ObjectNode)filterJson;
迭代器字段=input.fieldNames();
while(fields.hasNext()){
字符串fieldName=fields.next();
if(fieldName.isEmpty()){
抛出新文档请求异常(
“您正在搜索的字段不能是空字符串!”);
}
...

在Cassandra之上公开的文档API是由开源项目提供的,实际上是由Datastax开发的,并嵌入到他们的Saas解决方案中

您创建的JSON查询字符串将在适当的CQL查询中进行解析和转换

源代码不说谎您可以找到完整的代码,特别是where子句的解析

公共列表转换为过滤器(
列出预设路径,
JsonNode过滤器(JSON){
列表条件=新建ArrayList();
如果(!filterJson.isObject()){
抛出新的DocumentPiRequestException(“搜索需要一个JSON对象作为输入。”);
}
ObjectNode输入=(ObjectNode)filterJson;
迭代器字段=input.fieldNames();
while(fields.hasNext()){
字符串fieldName=fields.next();
if(fieldName.isEmpty()){
抛出新文档请求异常(
“您正在搜索的字段不能是空字符串!”);
}
...

查询字符串在精神上与Mongo非常相似

下面是一些示例where子句,以提供一个想法:

{“name”:{“$eq”:“Eric”}
-非常简单,将具有字段
name
的文档与值
Eric

{“a.age”:{“$gt”:0}
-您还可以引用文档中的嵌套字段

{“friends.[0].name:{“$in”:[“Cassandra”]}
-数组元素是使用
[]
引用的,如果文档的第一个朋友名为Cassandra,则这将匹配


{“friends.*.age”:{“$gte”:24}
-通配符
*
可用于匹配数组中的任何元素或特定嵌套级别的任何字段。这匹配年龄大于等于24岁的任何朋友。

查询字符串在精神上与Mongo非常相似

下面是一些示例where子句,以提供一个想法:

{“name”:{“$eq”:“Eric”}
-非常简单,将具有字段
name
的文档与值
Eric

{“a.age”:{“$gt”:0}
-您还可以引用文档中的嵌套字段

{“friends.[0].name:{“$in”:[“Cassandra”]}
-数组元素是使用
[]
引用的,如果文档的第一个朋友名为Cassandra,则这将匹配


{“friends.*.age”:{“$gte”:24}}
-通配符
*
可用于匹配数组中的任何元素或特定嵌套级别的任何字段。这匹配年龄大于等于24岁的任何朋友。

我的意思是这些完全相同的运算符在MongoDB的查询语言中。我的意思是这些完全相同的运算符在MongoDB的查询语言中。
public List<FilterCondition> convertToFilterOps(
 List<PathSegment> prependedPath, 
 JsonNode filterJson) {
 
 List<FilterCondition> conditions = new ArrayList<>();

 if (!filterJson.isObject()) {
  throw new DocumentAPIRequestException("Search was expecting a JSON object as input.");
 }

 ObjectNode input = (ObjectNode) filterJson;
 Iterator<String> fields = input.fieldNames();
 while (fields.hasNext()) {
  String fieldName = fields.next();
  if (fieldName.isEmpty()) {
    throw new DocumentAPIRequestException(
        "The field(s) you are searching for can't be the empty string!");
  }
 ...