亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 Spring Data MongoDB 拒絕聚合管道中包含 $ 的字段名稱?

為什么 Spring Data MongoDB 拒絕聚合管道中包含 $ 的字段名稱?

三國紛爭 2022-07-06 18:43:06
使用 Spring Data 的ProjectionOperation類在 MongoDB 上創建聚合查詢時,使用帶有“$”(例如“test$”)字符的字段會導致IllegalArgumentException驗證 spring 數據 mongodb 源時,我注意到在AggregationField類的構造函數中執行了字段名稱的清理。Fields.java 類private static String cleanUp(String source) {    if (Aggregation.SystemVariable.isReferingToSystemVariable(source)) {        return source;    }    int dollarIndex = source.lastIndexOf('$');    return dollarIndex == -1 ? source : source.substring(dollarIndex + 1);}MongoDB 中字段的命名不鼓勵使用“$”字符,或者這是 Spring Data 問題?
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

參考文檔明確指出,官方 MongoDB 驅動程序目前不支持它:

重要的

MongoDB 查詢語言不能總是有意義地表達對字段名稱包含這些字符的文檔的查詢(請參閱 SERVER-30575)。在查詢語言中添加支持之前,使用 $ 和 . 不推薦使用 in 字段名稱,官方 MongoDB 驅動程序也不支持。{引用}

即 Spring Data 不能支持它,直到支持它成為官方 Java 驅動程序。


查看完整回答
反對 回復 2022-07-06
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

這似乎是一個Spring數據Mongodb的問題......你的字段名應該是允許的。

您可以在字段名稱中使用任何不特殊的 (UTF8) 字符(包含“.”或以“$”開頭)。

您可以嘗試使用BasicDBObject構建您的項目操作。這是一個示例:如何在 Spring Data MongoDB 中使用 $arrayElemAt 運算符


查看完整回答
反對 回復 2022-07-06
  • 2 回答
  • 0 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號