如何在Delphi中通过TUniQuery(UniDAC)从MongoDB获取多字段?
在Delphi中用UniDAC的TUniQuery实现MongoDB多字段查询
要实现对应MongoSH中db.myCollection.find({}, {Id: 1, Number: 1})的查询效果,你需要在TUniQuery的MongoDB命令中添加projection参数,用来指定要返回的字段。
具体代码示例
替换你原来的SQL.Text内容,加入projection配置:
UniQuery1.Close; UniQuery1.SQL.Clear; // 添加projection参数指定返回Id、Number字段(默认会返回_id) UniQuery1.SQL.Text := '{"find":"myCollection", "filter":{}, "projection":{"Id":1, "Number":1}}'; UniQuery1.Open;
参数说明
filter:{}:表示查询集合中所有文档(和MongoSH里的第一个空对象对应),如果需要过滤条件,直接在这个对象里写筛选规则,比如你原来的{Id: 530142}projection:{"Id":1, "Number":1}:指定只返回Id和Number字段,MongoDB默认会自动返回_id字段;如果不需要返回_id,可以在projection里加上"_id":0,即:"projection":{"_id":0, "Id":1, "Number":1}
带过滤条件的多字段查询示例
如果要同时保留过滤条件(比如筛选Id=530142的文档),并只返回指定字段:
UniQuery1.Close; UniQuery1.SQL.Clear; UniQuery1.SQL.Text := '{"find":"myCollection", "filter":{"Id":530142}, "projection":{"Id":1, "Number":1}}'; UniQuery1.Open;
内容的提问来源于stack exchange,提问作者wBB
相关产品推荐
相关产品推荐

