diff --git a/src/Jenssegers/Mongodb/Query/Builder.php b/src/Jenssegers/Mongodb/Query/Builder.php index ad63d462e..e088132cd 100644 --- a/src/Jenssegers/Mongodb/Query/Builder.php +++ b/src/Jenssegers/Mongodb/Query/Builder.php @@ -203,6 +203,16 @@ public function find($id, $columns = []) return $this->where('_id', '=', $this->convertKey($id))->first($columns); } + /** + * @inheritdoc + */ + public function value($column) + { + $result = (array) $this->first([$column]); + + return Arr::get($result, $column); + } + /** * @inheritdoc */ diff --git a/tests/QueryBuilderTest.php b/tests/QueryBuilderTest.php index 0807b4ece..097ded65b 100644 --- a/tests/QueryBuilderTest.php +++ b/tests/QueryBuilderTest.php @@ -701,4 +701,16 @@ public function testProjections() $this->assertEquals(1, count($result['tags'])); } } + + public function testValue() + { + DB::collection('books')->insert([ + ['title' => 'Moby-Dick', 'author' => ['first_name' => 'Herman', 'last_name' => 'Melville']] + ]); + + $this->assertEquals('Moby-Dick', DB::collection('books')->value('title')); + $this->assertEquals(['first_name' => 'Herman', 'last_name' => 'Melville'], DB::collection('books')->value('author')); + $this->assertEquals('Herman', DB::collection('books')->value('author.first_name')); + $this->assertEquals('Melville', DB::collection('books')->value('author.last_name')); + } }