MCPcopy Index your code
hub / github.com/mongodb/mongo-python-driver / test_field_selection

Method test_field_selection

test/test_collection.py:645–697  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

643 self.assertNotEqual({}, stage)
644
645 def test_field_selection(self):
646 db = self.db
647 db.drop_collection("test")
648
649 doc = {"a": 1, "b": 5, "c": {"d": 5, "e": 10}}
650 db.test.insert_one(doc)
651
652 # Test field inclusion
653 doc = next(db.test.find({}, ["_id"]))
654 self.assertEqual(list(doc), ["_id"])
655 doc = next(db.test.find({}, ["a"]))
656 l = list(doc)
657 l.sort()
658 self.assertEqual(l, ["_id", "a"])
659 doc = next(db.test.find({}, ["b"]))
660 l = list(doc)
661 l.sort()
662 self.assertEqual(l, ["_id", "b"])
663 doc = next(db.test.find({}, ["c"]))
664 l = list(doc)
665 l.sort()
666 self.assertEqual(l, ["_id", "c"])
667 doc = next(db.test.find({}, ["a"]))
668 self.assertEqual(doc["a"], 1)
669 doc = next(db.test.find({}, ["b"]))
670 self.assertEqual(doc["b"], 5)
671 doc = next(db.test.find({}, ["c"]))
672 self.assertEqual(doc["c"], {"d": 5, "e": 10})
673
674 # Test inclusion of fields with dots
675 doc = next(db.test.find({}, ["c.d"]))
676 self.assertEqual(doc["c"], {"d": 5})
677 doc = next(db.test.find({}, ["c.e"]))
678 self.assertEqual(doc["c"], {"e": 10})
679 doc = next(db.test.find({}, ["b", "c.e"]))
680 self.assertEqual(doc["c"], {"e": 10})
681
682 doc = next(db.test.find({}, ["b", "c.e"]))
683 l = list(doc)
684 l.sort()
685 self.assertEqual(l, ["_id", "b", "c"])
686 doc = next(db.test.find({}, ["b", "c.e"]))
687 self.assertEqual(doc["b"], 5)
688
689 # Test field exclusion
690 doc = next(db.test.find({}, {"a": False, "b": 0}))
691 l = list(doc)
692 l.sort()
693 self.assertEqual(l, ["_id", "c"])
694
695 doc = next(db.test.find({}, {"_id": False}))
696 l = list(doc)
697 self.assertNotIn("_id", l)
698
699 def test_options(self):
700 db = self.db

Callers

nothing calls this directly

Calls 5

nextFunction · 0.90
drop_collectionMethod · 0.45
insert_oneMethod · 0.45
findMethod · 0.45
sortMethod · 0.45

Tested by

no test coverage detected