Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.24 KB | None | 0 0
  1. Jeśli jeszcze macie ochotę brnąć w to wszystko dalej ;-)
  2.  
  3. Tabelka z danymi:
  4. <code>
  5. testm=# select * from testcollection;
  6. id | name | sname | age
  7. ----+----------------------+----------------------+--------
  8. 1 | LEeUk6sCZhquTlm9hVW3 | LjFxXYpRWNdIjmtHMbec | 82232
  9. 2 | Z1Q72WqWVCNW732jtNeH | k5GBun59KUgbHU0b0JFr | 161315
  10. 3 | 1ZjJjveDNJBsDGW1mlxP | OjEgiWJ7FKjbl8fJg1Cg | 935744
  11. 4 | YZSKWScWM2OPpHe8LZix | tSGCE4xWLiMUZLM6aYJX | 106394
  12. 5 | xnCgXTU0eABr4T264N28 | xaaQc3PNKwtYa91qfK7w | 715951
  13. 6 | OZ0T7eXjJ1cO7aMn8Dwi | lwUP7g1w8RB4Ibm3PZ0G | 444402
  14. 7 | VBaUi8QBSGq4mq3EX4W8 | qqXfqlZHXGFkSyG7OQo0 | 15788
  15. 8 | 2XB9xhbJaRkGWeQwaxrO | QdX5wZMpPGkew8zW8xEG | 425219
  16. 9 | 9aTOrhBAzj7WPHixx00i | nC2SjU5RnDYbrEU83Ufl | 839914
  17. 10 | pFMkX6nrQn9H3mCsnwjp | USNg3gWC3L830NsXKYEg | 385078
  18. </code>
  19.  
  20. W Mongo te same dane.
  21.  
  22. Zapytanie w postgresie generuje poprawne wyniki:
  23. <code>
  24. select name, sname, age from testcollection where name <= 'YZSKWScWM2OPpHe8LZix' ORDER BY name LIMIT 10 OFFSET 3
  25. LEeUk6sCZhquTlm9hVW3 LjFxXYpRWNdIjmtHMbec 82232
  26. OZ0T7eXjJ1cO7aMn8Dwi lwUP7g1w8RB4Ibm3PZ0G 444402
  27. pFMkX6nrQn9H3mCsnwjp USNg3gWC3L830NsXKYEg 385078
  28. VBaUi8QBSGq4mq3EX4W8 qqXfqlZHXGFkSyG7OQo0 15788
  29. xnCgXTU0eABr4T264N28 xaaQc3PNKwtYa91qfK7w 715951
  30. YZSKWScWM2OPpHe8LZix tSGCE4xWLiMUZLM6aYJX 106394
  31. </code>
  32.  
  33. Analogiczne zapytanie w Mongo zwraca takie dane:
  34. <code>
  35. { "_id" : { "$oid" : "5835eff09dd4e4442c4d1091" }, "name" : "LEeUk6sCZhquTlm9hVW3", "sname" : "LjFxXYpRWNdIjmtHMbec", "age" : 82232 }
  36. { "_id" : { "$oid" : "5835eff09dd4e4442c4d1096" }, "name" : "OZ0T7eXjJ1cO7aMn8Dwi", "sname" : "lwUP7g1w8RB4Ibm3PZ0G", "age" : 444402 }
  37. { "_id" : { "$oid" : "5835eff09dd4e4442c4d1097" }, "name" : "VBaUi8QBSGq4mq3EX4W8", "sname" : "qqXfqlZHXGFkSyG7OQo0", "age" : 15788 }
  38. { "_id" : { "$oid" : "5835eff09dd4e4442c4d1094" }, "name" : "YZSKWScWM2OPpHe8LZix", "sname" : "tSGCE4xWLiMUZLM6aYJX", "age" : 106394 }
  39. </code>
  40. Tak jakby zabrakło tych, gdzie pole name zaczyna się od małych liter.
  41.  
  42. Ale w innym zapytaniu (tzn w odpowiedniku tego zapytania w mongo):
  43. <code>
  44. select name, sname, age from testcollection where name <= 'pFMkX6nrQn9H3mCsnwjp' ORDER BY name LIMIT 10 OFFSET 3
  45. </code>
  46.  
  47. Wyniki takie:
  48. <code>
  49. { "_id" : { "$oid" : "5835eff09dd4e4442c4d1091" }, "name" : "LEeUk6sCZhquTlm9hVW3", "sname" : "LjFxXYpRWNdIjmtHMbec", "age" : 82232 }
  50. { "_id" : { "$oid" : "5835eff09dd4e4442c4d1096" }, "name" : "OZ0T7eXjJ1cO7aMn8Dwi", "sname" : "lwUP7g1w8RB4Ibm3PZ0G", "age" : 444402 }
  51. { "_id" : { "$oid" : "5835eff09dd4e4442c4d1097" }, "name" : "VBaUi8QBSGq4mq3EX4W8", "sname" : "qqXfqlZHXGFkSyG7OQo0", "age" : 15788 }
  52. { "_id" : { "$oid" : "5835eff09dd4e4442c4d1094" }, "name" : "YZSKWScWM2OPpHe8LZix", "sname" : "tSGCE4xWLiMUZLM6aYJX", "age" : 106394 }
  53. { "_id" : { "$oid" : "5835eff09dd4e4442c4d1092" }, "name" : "Z1Q72WqWVCNW732jtNeH", "sname" : "k5GBun59KUgbHU0b0JFr", "age" : 161315 }
  54. { "_id" : { "$oid" : "5835eff09dd4e4442c4d109a" }, "name" : "pFMkX6nrQn9H3mCsnwjp", "sname" : "USNg3gWC3L830NsXKYEg", "age" : 385078 }
  55. </code>
  56.  
  57.  
  58. Opcje buduję tak:
  59. <code>
  60. auto order = bsoncxx::builder::stream::document() << "name" << 1 << bsoncxx::builder::stream::finalize;
  61. auto opts = mongocxx::options::find();
  62. opts.sort(order.view());
  63. opts.limit(10);
  64. opts.skip(3);
  65. </code>
  66.  
  67. Zapytanie budję tak:
  68. <code>
  69. mongocxx::cursor cursor = collection.find(
  70. bsoncxx::builder::stream::document() <<
  71. "name" <<
  72. bsoncxx::builder::stream::open_document <<
  73. "$lte" <<
  74. trios[i].name <<
  75. bsoncxx::builder::stream::close_document <<
  76. bsoncxx::builder::stream::finalize
  77. ,
  78. opts
  79. );
  80. </code>
  81.  
  82. Widzicie jakiś bląd? Ja póki co nie widzę.
  83.  
  84. Pozdrawiam
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement