Cut object into two objects with a plane
While i can suggest to use bisect, i have an even better solution, i wrote a little "free" add-on for exactly this situation. Called it Bisectplus, as it can take a plane object and generate 3 vertex groups which represent the cut loop, as well as both sides (which include the center each) to make it easy to use for further operations.

The source-code can be found under https://github.com/Xylvier/Bisectplus/

As it says, seeing is believing:

No harm was done to the monkey.