Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Jeśli jeszcze macie ochotę brnąć w to wszystko dalej ;-)
- Tabelka z danymi:
- <code>
- testm=# select * from testcollection;
- id | name | sname | age
- ----+----------------------+----------------------+--------
- 1 | LEeUk6sCZhquTlm9hVW3 | LjFxXYpRWNdIjmtHMbec | 82232
- 2 | Z1Q72WqWVCNW732jtNeH | k5GBun59KUgbHU0b0JFr | 161315
- 3 | 1ZjJjveDNJBsDGW1mlxP | OjEgiWJ7FKjbl8fJg1Cg | 935744
- 4 | YZSKWScWM2OPpHe8LZix | tSGCE4xWLiMUZLM6aYJX | 106394
- 5 | xnCgXTU0eABr4T264N28 | xaaQc3PNKwtYa91qfK7w | 715951
- 6 | OZ0T7eXjJ1cO7aMn8Dwi | lwUP7g1w8RB4Ibm3PZ0G | 444402
- 7 | VBaUi8QBSGq4mq3EX4W8 | qqXfqlZHXGFkSyG7OQo0 | 15788
- 8 | 2XB9xhbJaRkGWeQwaxrO | QdX5wZMpPGkew8zW8xEG | 425219
- 9 | 9aTOrhBAzj7WPHixx00i | nC2SjU5RnDYbrEU83Ufl | 839914
- 10 | pFMkX6nrQn9H3mCsnwjp | USNg3gWC3L830NsXKYEg | 385078
- </code>
- W Mongo te same dane.
- Zapytanie w postgresie generuje poprawne wyniki:
- <code>
- select name, sname, age from testcollection where name <= 'YZSKWScWM2OPpHe8LZix' ORDER BY name LIMIT 10 OFFSET 3
- LEeUk6sCZhquTlm9hVW3 LjFxXYpRWNdIjmtHMbec 82232
- OZ0T7eXjJ1cO7aMn8Dwi lwUP7g1w8RB4Ibm3PZ0G 444402
- pFMkX6nrQn9H3mCsnwjp USNg3gWC3L830NsXKYEg 385078
- VBaUi8QBSGq4mq3EX4W8 qqXfqlZHXGFkSyG7OQo0 15788
- xnCgXTU0eABr4T264N28 xaaQc3PNKwtYa91qfK7w 715951
- YZSKWScWM2OPpHe8LZix tSGCE4xWLiMUZLM6aYJX 106394
- </code>
- Analogiczne zapytanie w Mongo zwraca takie dane:
- <code>
- { "_id" : { "$oid" : "5835eff09dd4e4442c4d1091" }, "name" : "LEeUk6sCZhquTlm9hVW3", "sname" : "LjFxXYpRWNdIjmtHMbec", "age" : 82232 }
- { "_id" : { "$oid" : "5835eff09dd4e4442c4d1096" }, "name" : "OZ0T7eXjJ1cO7aMn8Dwi", "sname" : "lwUP7g1w8RB4Ibm3PZ0G", "age" : 444402 }
- { "_id" : { "$oid" : "5835eff09dd4e4442c4d1097" }, "name" : "VBaUi8QBSGq4mq3EX4W8", "sname" : "qqXfqlZHXGFkSyG7OQo0", "age" : 15788 }
- { "_id" : { "$oid" : "5835eff09dd4e4442c4d1094" }, "name" : "YZSKWScWM2OPpHe8LZix", "sname" : "tSGCE4xWLiMUZLM6aYJX", "age" : 106394 }
- </code>
- Tak jakby zabrakło tych, gdzie pole name zaczyna się od małych liter.
- Ale w innym zapytaniu (tzn w odpowiedniku tego zapytania w mongo):
- <code>
- select name, sname, age from testcollection where name <= 'pFMkX6nrQn9H3mCsnwjp' ORDER BY name LIMIT 10 OFFSET 3
- </code>
- Wyniki takie:
- <code>
- { "_id" : { "$oid" : "5835eff09dd4e4442c4d1091" }, "name" : "LEeUk6sCZhquTlm9hVW3", "sname" : "LjFxXYpRWNdIjmtHMbec", "age" : 82232 }
- { "_id" : { "$oid" : "5835eff09dd4e4442c4d1096" }, "name" : "OZ0T7eXjJ1cO7aMn8Dwi", "sname" : "lwUP7g1w8RB4Ibm3PZ0G", "age" : 444402 }
- { "_id" : { "$oid" : "5835eff09dd4e4442c4d1097" }, "name" : "VBaUi8QBSGq4mq3EX4W8", "sname" : "qqXfqlZHXGFkSyG7OQo0", "age" : 15788 }
- { "_id" : { "$oid" : "5835eff09dd4e4442c4d1094" }, "name" : "YZSKWScWM2OPpHe8LZix", "sname" : "tSGCE4xWLiMUZLM6aYJX", "age" : 106394 }
- { "_id" : { "$oid" : "5835eff09dd4e4442c4d1092" }, "name" : "Z1Q72WqWVCNW732jtNeH", "sname" : "k5GBun59KUgbHU0b0JFr", "age" : 161315 }
- { "_id" : { "$oid" : "5835eff09dd4e4442c4d109a" }, "name" : "pFMkX6nrQn9H3mCsnwjp", "sname" : "USNg3gWC3L830NsXKYEg", "age" : 385078 }
- </code>
- Opcje buduję tak:
- <code>
- auto order = bsoncxx::builder::stream::document() << "name" << 1 << bsoncxx::builder::stream::finalize;
- auto opts = mongocxx::options::find();
- opts.sort(order.view());
- opts.limit(10);
- opts.skip(3);
- </code>
- Zapytanie budję tak:
- <code>
- mongocxx::cursor cursor = collection.find(
- bsoncxx::builder::stream::document() <<
- "name" <<
- bsoncxx::builder::stream::open_document <<
- "$lte" <<
- trios[i].name <<
- bsoncxx::builder::stream::close_document <<
- bsoncxx::builder::stream::finalize
- ,
- opts
- );
- </code>
- Widzicie jakiś bląd? Ja póki co nie widzę.
- Pozdrawiam
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement